c++构造函数执行顺序

引言

当创建一个类的对象时调用该类的构造函数;若为继承关系的类,则先执行父类的构造函数,再执行子类的构造函数;若为继承关系的类,该类中含有其它类类型的成员变量,那么其构造函数的调用顺序该如何呢。今天记录该问题。

验证示例

下面以简单的代码来验证这个问题,只需打断点调试即可值答案。

class A {
public:
	A() {}
	~A()
	{

	}
};

class C {
public:
	C() {}
	~C() {}
	void have() {
		cout << "have()" << endl;
	}
};
class B :public A {
public:
	B():A(){
		m_c.have();//这里写不写这行代码,都对最终的结果无影响
	}
	~B()
	{

	}

	void play() {
		m_c.have();
	}
private:
	C m_c;
};

结果

上述代码放入自己的项目中调试后的结果为:
先执行父类的构造函数,再执行类中所含类类型对象的构造函数,最后执行该类的构造函数。


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