派生类的构造过程

1、先基类、后对象、再子类

多继承,初始化顺序跟基类的声明顺序有关,从左到右。
对象 ,与声明类的顺序有关,从上到下。

2、若基类的构造器是默认构造器,就可以不显示的调用,如果没有的话,必须显示调用

此规则同样适用于类中的对象。

3、派生类的析构顺序,与构造顺序相反。

先子类、后对象、再基类。正好符合压栈与出栈的顺序。

并且,不需要显示的调用析构器,因为析构器默认无参且不能重载,以下为演示代码:

#include <iostream>
 
using namespace std;
 
class X
{
public:
	X(){cout << "X(){}" << endl;}
	~X(){cout << "~X(){}" << endl;}
};
 
class Base
{
public:
	Base(){cout << "Base(){}" << endl;};
	~Base(){cout << "~Base(){}" << endl;};
};
 
class Derive : public Base
{
public:
	Derive(){cout << "Derive(){}" << endl;};
	~Derive(){cout << "~Derive(){}" << endl;};
private:
	X x;
};
 
int main(int argc, char* argv[])
{
	Derive d;
	return 0;
}

代码运行后的效果如下:

2015-05-22_213207

说说你的想法