还是有关VC++虚函数表的有关问题~
还是有关VC++虚函数表的问题~~C/C++ code#includeiostreamusing namespace stdclass Base{public:void
还是有关VC++虚函数表的问题~~
C/C++ code#include<iostream>using namespace std;class Base{public: void virtual func1() { cout<<"Base function1"<<endl; } void virtual func2() { cout<<"Base function2"<<endl; }};class Derive:public Base{public: void virtual func1() { cout<<"Derive function1"<<endl; }};int main(){ Base *pObj; pObj=new Derive(); return 0;}
调试,从 局部变量 窗口可以看到。这里的 pObj指向了一个 Derive对象和一个__vfptr(虚函数表),但是这个Derive对象里面的Base部分包含了一个跟__vfptr一摸一样的虚函数表。
请问为什么 pObj指向的内存存储了两份一样的 虚函数表??
[解决办法][解决办法]呵呵,你是通过VC看的吧,其实那并不是通一个表,你可以看看,它们指向地地址是不同的,
子类的地址是包含了父类地址的(前提是子类实现了自己的虚函数),
它们有一个公共的部分。
[解决办法][解决办法]你同时计算下两个类的大小,你会发现它们各包含自己的虚函数表,2个并不奇怪