引言
当创建一个类的对象时调用该类的构造函数;若为继承关系的类,则先执行父类的构造函数,再执行子类的构造函数;若为继承关系的类,该类中含有其它类类型的成员变量,那么其构造函数的调用顺序该如何呢。今天记录该问题。
验证示例
下面以简单的代码来验证这个问题,只需打断点调试即可值答案。
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;
};
结果
上述代码放入自己的项目中调试后的结果为:
先执行父类的构造函数,再执行类中所含类类型对象的构造函数,最后执行该类的构造函数。