C++虚函数解析
今天在陈皓的博客看到这篇美文《C++ 虚函数表解析》(http://blog.csdn.net/haoel/article/details/1948051),并自己也“COPY”这样一份代码,以加深印象。
#include <iostream> using namespace std; class Base1 { public: virtual void f() { cout << "Base1::f" << endl; } virtual void g() { cout << "Base1::g" << endl; } }; class Base2 { public: virtual void f() { cout << "Base2::f" << endl; } virtual void g() { cout << "Base2::g" << endl; } }; class Derive : public Base1, public Base2 { public: virtual void f() { cout << "Derive::f" << endl; } virtual void g1() { cout << "Derive::g1" << endl; } }; typedef void (*Fun)(void); int main() { Fun pFun = NULL; Derive d; int** pVtab = (int**)&d; //pFun = (Fun)*((int*)*(int*)((int*)&d+0)+0); pFun = (Fun)pVtab[0][0]; return 0; }