【发布时间】:2011-03-29 15:02:19
【问题描述】:
我的问题是参考this question,它解释了虚拟函数在对象切片的情况下如何工作,最终调用基类虚函数和Wikipedia article,它解释了下面代码的派生类的虚拟表布局
class A{
public:
virtual void func(){ cout<<"\n In A:func";}
};
class B:public A{
public:
virtual void func(){ cout<<"\n In B:func";}
};
main(){
A *ptr1 = new B();
A oA = *ptr1;
oA.func();
}
DerviedClassObjectB:
+0: pointer to virtual method table of B
virtual method table of B:
+0: B::func
上面的程序输出 "In A::func" 。
但是如果 B 类的虚拟表不知道基类 A::func 怎么会最终调用 A::func
【问题讨论】:
标签: c++ function virtual vtable