今天发现主程序中有多个对象时析构函数的执行顺序不是对象定义的顺序,而是对象定义顺序反过来。
思考了一下,结合之前继承、成员对象等的析构函数执行的顺序,我觉得析构函数执行的顺序为:构造函数的顺序反过来,可能是用栈什么的保存?机理我也不清楚,不过测试看起来好像是这个样子。
#include<iostream>using namespace std;class A
{int id;
public:static int count;A(){id = ++count;cout <<"A("<< id <<")"<< endl;}~A(){cout << "~A(" << id << ")" << endl;count--;}
};int A::count = 0;int main()
{A a;A b;
}
运行结果: