如题,在调用析构函数时,其顺序和构造函数的顺序完全相反。例如:
class A
{
public:
A(){cout<<"A construction"<<endl;}
~A(){cout<<"A destruction"<<endl;}
};
class B
{
public:
B(){cout<<"B construction"<<endl;}
~B(){cout<<"B destruction"<<endl;}
A a;
};
main()
{
B b;
}
则其结果如下:A construction
B construction
B destruction
A destruction
结果验证了上述结论,可是问题就在后两个。
“析构函数只是在类对象生命结束时,由系统调用”---钱能 《C++程序设计教程》
我就搞不清楚了,为什么B对象结束比A对象还早?明明是在B对象中调用A的对象,B先被析构?一旦B被析构,岂不是B对象的一些资源都被释放掉了(假如有的话)?还有如果从调用机理来说,也是说不通的。哪位兄弟知道,到底为什么?谢谢了
[此贴子已经被作者于2007-3-19 16:27:10编辑过]