我有一个奇怪的C++问题,我不确定它是否可以这种方式正确运行,或者我错过了什么。

有一个A类,它继承自ABaseABaseA都有方法Generate(),而A::Generate()应该覆盖ABase::Generate()

从ABase的构造函数中调用Generate()。

现在我的问题是:

我做了一个new A(),它首先跳到A的构造函数,然后从那里跳到ABase的构造函数。 ABase::ABase()现在调用Generate()。我想做的是:应该执行A::Generate()(因为这会覆盖ABase::Generate())。

不幸的是,在ABase的构造函数中,似乎只调用了ABase::Generate(),而不是A::Generate()

我猜想是因为在这个阶段A尚未完全构建?还是有办法让ABase::ABase()使用A::Generate()

最佳答案

您不希望执行A::Generate(),因为这
将涉及在尚未被执行的类上执行函数
建。 C++是有意设计的,因此在
构造,对象的动态类型就是
构造,正是为了避免此类问题。

关于c++ - 在基类的构造过程中访问继承的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17471618/

10-09 07:35