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;
}
posted @ 2012-04-26 16:28  木愚  阅读(187)  评论(0编辑  收藏  举报