C++程序是这样的:
class Foo
{
// something here
};
int main ()
{
Foo f_A;
Foo f_B;
Foo f_C;
//do something here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
事实已经证明,f_A之前的构造f_B,解构之后f_B,以及在g ++ 之后f_B解构f_C.确定序列的是什么?编译器是否相关?
C++标准指定顺序.
第6.7/2段:
每次执行声明语句时,都会初始化具有自动存储持续时间(3.7.3)的变量.块中声明的具有自动存储持续时间的变量在从块(6.6)退出时被销毁.
这意味着构造的顺序与变量在上面的源中列出的顺序相同,这很重要,因为...
第6.6/2段:
在从范围退出(但是已完成)时,在该范围内构造的具有自动存储持续时间(3.7.3)的对象将按其构造的相反顺序销毁.