C ++程序是这样的:
class Foo
{
// something here
};
int main ()
{
Foo f_A;
Foo f_B;
Foo f_C;
//do something here
return 0;
}
已经证明,在f_A
之前构建的f_B
在f_B
之后解构,而f_B
在g ++中f_C
之后解构。确定序列 ?它与编译器有关吗?
答案 0 :(得分:6)
这将是与建筑相反的顺序。这由C ++标准指定。
答案 1 :(得分:5)
C ++标准指定了订单。
第6.7 / 2段:
每个都初始化具有自动存储持续时间(3.7.3)的变量 他们的声明声明被执行的时间。自动变量 块中声明的存储持续时间在退出时被销毁 块(6.6)。
这意味着构造的顺序与变量在上面的源中列出的顺序相同,这很重要,因为......
第6.6 / 2段:
退出范围(无论多么已完成),具有自动对象 在该范围内构建的存储持续时间(3.7.3) 按照与其建造相反的顺序销毁。