class Base{ public: virtual void f(){cout<<"Base::f"<<endl;} virtual void g(){cout<<"Base::g"<<endl;} virtual void h(){cout<<"Base::h"<<endl;} }; typedef void (*Fun)(void); int main(){ Base b; cout<<"虚函数表首地址:"<<*(int*)(&b)<<endl; cout<<"虚函数表第一个函数的存储地址:"<<((int*)(*(int *)(&b)))<<endl; cout<<"虚函数表第一个函数的入口地址:"<<*((int*)(*(int *)(&b)))<<endl; Fun pFun=NULL; pFun=(Fun)*((int*)(*(int *)(&b))); pFun(); pFun=(Fun)*((int*)(*(int *)(&b))+1); pFun(); pFun=(Fun)*((int*)(*(int *)(&b))+2); pFun(); return 0; }
程序执行结果: