c++虚函数表详解(三)

来源:互联网 发布:阿里云ecs按量付费 编辑:程序博客网 时间:2024/05/30 04:12

基类和派生类共用一个虚函数表吗?

#include <iostream>#include <tchar.h>using namespace std;class Human{public:virtual void Print(){cout << _T("Human::Print") << endl;}};class Man: public Human{public:virtual void Print(){cout << _T("Man::Print") << endl;}};int _tmain(int argc, TCHAR argv[], TCHAR envp[]){Human Modi;Man Negi;int* pModi = (int*)(&Modi);int* pNegi = (int*)(&Negi);int* AddrOfModiVTable = (int*)(*pModi);int* AddrOfNegiVTable = (int*)(*pNegi);cout << _T("Modi的虚函数表的地址:") << AddrOfModiVTable << endl;cout << _T("Neig的虚函数表的地址:") << AddrOfNegiVTable << endl;return 0;}

函数的执行结果如下:

答案:基类和该基类的派生类不共用同一个虚函数表。

总结:一个有虚函数的类对应一个虚函数表,基类和该基类的派生类不共用一个虚函数表。

原创粉丝点击