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

如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B?

如果对象B的数据成员是public限定的,对象A的构造函数不用初始化列表不行吗?

正在回答

2 回答

贴一下我在网上搜的解释;

如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B(原因:因为实例化A时,会先执行B的构造函数,再执行A的构造函数,如若对象B没有默认构造函数,即需要给B的构造函数传递参数才能调用,但是此时A的构造函数还没有执行,因此它还拿不到A构造函数的参数,所以先调用B的构造函数这个过程将无法进行。而初始化列表会先于构造函数的执行对对象成员进行初始化,因此不必再担心B的构造函数拿不到参数而无法执行的问题。因此如果B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B.)

转自:https://blog.csdn.net/hudfang/article/details/50511481

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

qq_轻指谈笑红尘_0

说的很清楚,赞一个
2018-07-25 回复 有任何疑惑可以回复我~

不是必须的


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

qq_慕虎1144658

你在搞笑吗 答案都说是必须了
2019-02-28 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B?

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