今天發現主程序中有多個對象時析構函數的執行順序不是對象定義的順序,而是對象定義順序反過來。
思考了一下,結合之前繼承、成員對象等的析構函數執行的順序,我覺得析構函數執行的順序為:構造函數的順序反過來,可能是用棧什么的保存?機理我也不清楚,不過測試看起來好像是這個樣子。
#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;
}
運行結果: