#include <iostream>
using namespace std;
class Base {
private:
virtual void f() { cout << "Base::f" << endl; }
virtual void gf() { cout << "Base::gf" << endl; }
};
class Derive : public Base {
};
typedef void(*Fun)(void);
void main() {
Derive d;
cout << &d << endl;//对象指向虚函数表的指针地址
cout << (int*)(&d) << endl;//虚函数表的地址
cout << (int*)*(int*)(&d) << endl;//第一个虚函数的地址
Fun pFun = (Fun)*((int*)*(int*)(&d)+1);
pFun();
}