C++ 为什么我的虚拟方法没有被覆盖?

C++ 为什么我的虚拟方法没有被覆盖?,c++,overriding,C++,Overriding,为什么第二行不是派生的乐趣?因为你是这样写的。。。对派生类构造函数的调用执行以下操作: base class fun of base derive class fun of derive 更多细节在基类构造函数中调用()>代码>时,派生类尚未构建(C++中,类A先构造父类),因此系统没有派生的实例,因此在“虚函数表”中没有条目为::Fun.()/ < /P> 这就是为什么通常不赞成在构造函数中调用虚拟函数的原因,除非您特别希望调用虚拟函数的实现,该虚拟函数是当前正在实例化的对象的一部分或其祖先

为什么第二行不是派生的乐趣?

因为你是这样写的。。。对派生类构造函数的调用执行以下操作:

base class
fun of base
derive class
fun of derive

更多细节

在基类构造函数中调用<代码>()>代码>时,派生类尚未构建(C++中,类A先构造父类),因此系统没有派生的实例,因此在“虚函数表”中没有条目为<代码>::Fun.()/<代码> < /P>
这就是为什么通常不赞成在构造函数中调用虚拟函数的原因,除非您特别希望调用虚拟函数的实现,该虚拟函数是当前正在实例化的对象的一部分或其祖先的一部分。

基类中的虚拟方法不总是被派生方法覆盖吗使用相同的签名,即使是在构造函数中?是的,但Timo刚刚给出了答案:)阅读材料:。
base class
fun of base
derive class
fun of derive
- Base Class Constructor call
   |
   Call to **fun of Base Class**
- Derived Class Constructor call
   |
   Call to **fun of the Derived Class**