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

来源:互联网 发布:c语言中的string.h 编辑:程序博客网 时间:2024/09/21 06:17

当基类和派生类中分别存在不重名的虚函数的时候,派生类对象的虚函数表中的虚函数地址是如何排列的?

#include <iostream>#include <tchar.h>using namespace std;class Human{public:virtual void HumanPrint(){cout << _T("Human::Print") << endl;}};class Man: public Human{public:virtual void ManPrint(){cout << _T("Man::Print") << endl;}};int _tmain(int argc, TCHAR argv[], TCHAR envp[]){typedef void(*FUN)();Man Modi;int* AddrOfModiVTable = (int*)(*(int*)(&Modi));FUN pFunc = (FUN)(*AddrOfModiVTable);pFunc();pFunc = (FUN)(*(++AddrOfModiVTable));pFunc();return 0;}

运行结果如下所示:

答案:派生类的虚函数表里先存放基类的虚函数地址,再存放派生类的虚函数地址。

原创粉丝点击