内嵌子对象时派生类构造函数与析构函数的调用顺序

调用顺序

1.调用基类的构造函数,对基类数据成员初始化。

2,调用子对象构造函数,对子对象数据成员初始化;

3.调用派生类的构造函数,对派生类数据成员初始化。

#include<iostream>
using namespace std;
class Base{
public:
	Base(int n)
	{
		i=n;
		cout<<"constructing  Base class"<<endl;
	}
	~Base()
	{
		cout<<"destructing   Base class"<<endl;
	}
	dispB()
	{
		cout<<"i="<<i<<endl;
	}
private:
	int i;
};
class Derived:public Base{
public:
	Derived(int y):Base(y),base(y)   //派生类的构造函数。调用基类构造函数和子对象构造函数
	{
		cout<<"constructing Derived class"<<endl;
	}
	~Derived()
	{
		cout<<"destructing Derived class"<<endl;
	}
private:
	Base base;  //定义子对象base
};
int main()
{
	Derived der(521);
	der.dispB();
	return 0;
}



版权声明:本文为OPK625153475原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。