Consider the following C++ header:
#include "OtherThing.h"
class Thing
{
public:
Thing(); //ctor
private:
OtherThing my_var_{};
};
Is the private var my_var_
still managed according to RAII, or does its lifetime exceed the scope of Thing
in any way? I searched for a clear answer for a good while, but either formed my question poorly or didn't know how to read what was given.
Is the private var my_var_ still managed according to RAII, or does its lifetime exceed the scope of Thing in any way?
The data member my_var_
is a non-static data member and is associated with a particular instance of class Thing
. More importantly, it's lifetime can never exceed the lifetime of the associated Thing
object.
When a given Thing
object goes out of scope, it's data members are also destroyed. Basically, a Thing
object includes its data members so logically when the Thing
object is destroyed the data members will also be destroyed.
Also note that technically the lifetime of an object with a constructor doesn't begin until the execution of the constructor has completed. So the lifetime of the class members is slightly longer than lifetime of the containing object as pointer out by @M.M