我有一个奇怪的C++问题,我不确定它是否可以这种方式正确运行,或者我错过了什么。
有一个A
类,它继承自ABase
。 ABase
和A
都有方法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/