一、构造函数顺序
基类构造函数->成员构造函数(这里指所创建对象的成员)->派生类构造函数
二、析构函数顺序
与构造函数顺序完全相反
#include <iostream>
using namespace std;
class cBaseMem //基类成员
{
public:
cBaseMem()
{
cout << "cBaseMem" << endl;
}
~cBaseMem()
{
cout << "~cBaseMem" << endl;
}
};
class cBase //基类
{
public:
cBaseMem baseMem; //声明基类成员
cBase()
{
cout << "cBase" << endl;
}
~cBase()
{
cout << "~cBase" << endl;
}
};
class cSon : public cBase //子类
{
public:
cSon()
{
cout << "cSon" << endl;
}
~cSon()
{
cout << "~cSon" << endl;
}
};
class cGrandSonMem //孙类成员
{
public:
cGrandSonMem()
{
cout << "cGrandSonMem" << endl;
}
~cGrandSonMem()
{
cout << "~cGrandSonMem" << endl;
}
};
class cGrandSon : public cSon //声明孙类成员
{
public:
cGrandSonMem grandSonMem;
cGrandSon()
{
cout << "cGrandSon" << endl;
}
~cGrandSon()
{
cout << "~cGrandSon" << endl;
}
};
void main()
{
cGrandSon grandSon;
grandSon.~grandSon(); //调用析构函数
getchar();
return;
}
cBaseMem
cBase
cSon
cGrandSonMem
cGrandSon
~cGrandSon
~cGrandSonMem
~cSon
~cBase
~cBaseMem
图示: