关于析构函数的调用顺序可以参看代码:
#include <iostream>
using namespace std;
class Demo
{
public:
Demo(int i)
{
id = i;
cout << "id = " << id << " constructed." << endl;
}
~Demo()
{
cout << "id = " << id << " destructed." << endl;
}
private:
int id;
};
Demo d1(1);
void func()
{
static Demo d2(2);
Demo d3(3);
cout << "func" << endl;
}
int main()
{
Demo d4(4);
d4 = 6;
cout << "main" << endl;
{
Demo d5(5);
}
func();
cout << "main ends" << endl;
return 0;
}
运行结果如下:
可以看到先构造的对象后调用析构函数。
还可以知道全局对象,静态对象的析构顺序。