构造函数顺序
为什么实例化对象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;
}
举报