继承链是否会创建一系列构造函数调用?

时间:2016-11-17 04:38:54

标签: c++ inheritance constructor

在继承的上下文中,我一直在努力构建构造函数的概念。由于C + 11引入了这个主题的重大变化(即基础构造函数可以继承?),这种混淆更加复杂。

所以我的问题:

假设我不使用构造函数继承,只是在派生类中定义一个新的构造函数,基本构造函数是否仍然被调用?它似乎不应该,但我遇到一些文件说明确实会发生这种情况。这是否意味着当你有一个继承链时,会有一系列构造函数被调用?如果是这样,按什么顺序?派生前的基数,还是基数之前的基础?

谢谢!

1 个答案:

答案 0 :(得分:2)

以下是订单:

以下是实例化派生时实际发生的事情:

  
      
  1. 为派生的内存留出(足够用于Base和   衍生部分)
  2.   
  3. 适当的派生构造函数称为
  4.   
  5. 首先使用适当的Base构造函数构造Base对象。如果未指定基础构造函数,则为默认值   将使用构造函数。
  6.   
  7. 初始化列表初始化变量
  8.   
  9. 构造函数的主体执行
  10.   
  11. 控制权返回给来电者
  12.   

希望它有所帮助。