构造函数顺序
为什么实例化对象A时,如果对象A有对象成员B,那么先执行对象A的构造函数,再执行B的构造函数。这句话错了?
为什么实例化对象A时,如果对象A有对象成员B,那么先执行对象A的构造函数,再执行B的构造函数。这句话错了?
2016-01-01
因为A包含了对象B,也就是说要想“建造”A,必须先有B作为基础,所以,当对象B是对象A的一个数据成员时,先构造B,再构造A。可以利用代码简单跟踪一下:
class Member { public: Member() { std::cout << "Member's constructor" << std::endl; } private: int m_iA; }; class Combination { pubilc: Combination() { std::cout << "Combination's constructor" << std::endl; } private: Member m_mMem; } int main() { Combination c; return 0; }
举报