【问题标题】:What happens if you don't call the base constructor from the derived constructor?如果不从派生构造函数调用基构造函数会发生什么?
【发布时间】:2011-05-20 15:26:32
【问题描述】:

是否总是需要从派生类构造函数中调用基类构造函数?不调用会怎样?

【问题讨论】:

  • 从选项和术语猜测 C++ ;-)

标签: c++ class constructor base parameterized


【解决方案1】:

假设您正在谈论 C++(无论如何,这在大多数其他语言中应该是类似的),如果您不显式调用基类的构造函数,则会自动调用其默认构造函数(如果存在;如果不,编译器会触发错误)。

【讨论】:

  • 现在假设基类构造函数采用参数化参数,派生构造函数是空的。在主函数中,我声明了一个派生对象,没有对构造函数进行任何争论。会发生什么?任何方式分开将该对象的基本构造传递参数?
  • 不,这是不可能的。您的派生类必须将参数传递给基类的特定构造函数(如果基类不提供默认构造函数)。因此,派生类的构造函数“知道”必须传递的特定值,或者派生类也通过其构造函数请求这些参数,然后将它们转发给基类的构造函数。
【解决方案2】:

什么都没有,因为绝对不可能不这样做。

【讨论】:

  • 当然可以!正如我已经说过的:如果基类提供了默认构造函数,它将自动调用,除非您显式调用基类的构造函数。但最好明确地调用构造函数来表明目的是什么。
  • @Flinsch - 不知道你为什么说你可以,你只是解释了为什么你不能。
猜你喜欢
  • 2018-07-21
  • 2012-05-10
  • 2022-12-03
  • 2016-07-19
  • 2013-01-28
  • 2020-11-15
  • 2015-08-18
  • 2018-07-16
相关资源
最近更新 更多