C++类成员的生命周期是多少.例如,std::fstream某个Foo对象何时会被释放?进入析构函数或离开析构函数时?这是在C++标准中定义的吗?
struct Foo
{
std::fstream mystream;
~Foo()
{
// wait for thread writing to mystream
}
};
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 12
的mystream数据成员的破坏中被破坏Foo对象,之后的主体~Foo()被执行.C++11§12.4[class.dtor]/8州:
在执行析构函数的主体并销毁在主体内分配的任何自动对象之后,类
X的析构函数调用析构函数X的直接非变量非静态数据成员,X直接基类的析构函数,如果X是最派生类的类型,它的析构函数调用析构函数X的虚拟基类.
mystreamFoo(变量数据成员是联合的成员; Foo不是联合)是非变体的非静态数据成员.