为了账号安全,请及时绑定邮箱和手机立即绑定

构造函数顺序

为什么实例化对象A时,如果对象A有对象成员B,那么先执行对象A的构造函数,再执行B的构造函数。这句话错了?

正在回答

3 回答

销毁的时候不是应该先销毁B,再销毁A吗?为什么C是对的?

0 回复 有任何疑惑可以回复我~
#1

Allisam

A是箱子,B是箱子里的东西,要从外到内销毁。先拆箱子A,再销毁里面的东西B
2021-03-14 回复 有任何疑惑可以回复我~

因为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;
}
1 回复 有任何疑惑可以回复我~

类A中有 类B类型的成员对象,那么实例化A时,会先实例化B,即调用B的构造函数,再调用A的构造函数。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

构造函数顺序

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信