大家可以思考一下构造的顺序,析构的顺序
构造的顺序:
C ->A ->B ->D
大家可能会疑惑呢为啥D是最后呢? 其实虽然D是static,static的生命周期是全局的,但是真正只有进入main函数,运行到static那一行的时候,才开始构造D。
析构的顺序:
B ->A ->D ->C
构造A,B 然后析构B ,A。这是main函数结束时析构导致的,大家要记住“后定义,先析构”。
然后等待main函数结束后呢再析构D,最后析构C 一样后定义先析构。
大家忘记了的话可以去复习一下构造函数和析构函数
我现在用代码和结果验证一下
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "A()" << endl;
}
~A()
{
cout << "~A()" << endl;
}
};
class B
{
public:
B()
{
cout << "B()" << endl;
}
~B()
{
cout << "~B()" << endl;
}
};
class C
{
public:
C()
{
cout << "C()" << endl;
}
~C()
{
cout << "~C()" << endl;
}
};
class D
{
public:
D()
{
cout << "D()" << endl;
}
~D()
{
cout << "~D()" << endl;
}
};
C c;
int main()
{
A a;
B b;
static D d;
return 0;
}