【问题标题】:C++; is it possible to call parent constructor in middle of child constructor? [duplicate]C++;是否可以在子构造函数中间调用父构造函数? [复制]
【发布时间】:2016-07-20 09:01:02
【问题描述】:

只是一个快速的是/否问题。通过

调用父构造函数
child(someargs) : parent(somelessargs){...} 

在开始时调用父构造函数,在 {...} 中的所有代码之前,对吗?有没有办法在别处调用它?

这篇文章: C++ Inherit class with sending modified parameters to parent's constructor 使它看起来不太可能(尽管我还没有通读所有答案,因为它似乎没有回答我的问题)。

【问题讨论】:

  • 不,父类构造函数总是在子类构造函数之前调用。
  • 这没有意义。为了构造子对象,父对象必须已经存在。
  • 就像鞋子和袜子一样。你先穿袜子,然后穿鞋。后来你先脱鞋再脱袜子,但你不能一边脱袜子一边脱鞋……
  • 有这个解决方法:stackoverflow.com/questions/5894940/…
  • 谢谢@Bo Persson,还有pinturic,我完全同意,这是重复的。没有找到其他问题(可能是因为我搜索的是“父类”而不是“基类”。其他帖子的第一个答案似乎是一个解决方案!

标签: c++ inheritance constructor


【解决方案1】:

没有。这没有任何意义,因为在您输入 {...} 后,默认构造函数已经工作并且父对象已构建。

【讨论】:

  • 问题是我想对传递给基本构造函数的参数进行完整性检查。该参数可以有一个附加字段,但该字段仅在派生类的情况下存在。如果该参数为“true”,那么现在的代码将不起作用,因此我想检查并在必要时重新设置它。但也许你是对的:我的基构造函数调用了另一个具有虚函数的基类的构造函数,而且这似乎是不可能的。所以我的代码从一开始就有缺陷——尽管我仍然不相信你永远不需要这个。
  • 模板在这里可能是正确的方式。哇这么长的评论o.o
  • @dasWesen 您可以使用函数进行完整性检查并使用建议的解决方法here
  • 是的,这应该有效(这就是我对其他评论的意思。它确实是重复的。)
猜你喜欢
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2013-06-12
  • 2016-03-25
相关资源
最近更新 更多