c++中对象都是先构造成员变量,再调用自身的构造函数;故父类成员变量首先被构造,然后调用父类的构造函数,再构造子类的成员变量,最后调用子类的构造函数。
对象析构时与构造顺序相反,子类先调用自身的析构函数,再调用子类成员变量的析构函数,再调用父类的析构函数,再析构父类的成员变量。
测试代码如下:
#include <iostream>
using namespace std;
class Test
{
public:
Test()
{
cout<<"this is Basetest construction"<<endl;
}
~Test()
{
cout<<"this is Basetest destruction"<<endl;
}
};
class Test2
{
public:
Test2()
{
cout<<"this is SonTest Construction"<<endl;
}
~Test2()
{
cout<<"this is SonTest Destruction"<<endl;
}
};
class Base
{
public:
Base()
{
cout<<"this is Base construction"<<endl;
}
~Base()
{
cout<<"this is Base Destructior"<<endl;
}
Test a;
};
class Son:public Base
{
public:
Son()
{
cout<<"this is Son construction"<<endl;
}
~Son()
{
cout<<"this is Son Destruction"<<endl;
}
Test2 a;
};
int main()
{
//Base a;
Son test;
}