class Base { private: virtual void f() { cout << "Base::f" << endl; } virtual void g() { cout << "Base::g" << endl; } virtual void h() { cout << "Base::h" << endl; } }; class Derived:public Base { public: virtual void Show() { cout<<"Derived:Show()"<<endl; } }; int main() { typedef void(*Fun)(void); Derived b; Fun f,g,h,Show; cout<<(int*)*(int*)(&b)+0<<endl; cout<<(int*)*(int*)(&b)+1<<endl; cout<<(int*)*(int*)(&b)+2<<endl; f=(Fun)*((int*)*(int*)(&b)+0); // Base::f() g=(Fun)*((int*)*(int*)(&b)+1); // Base::g() h=(Fun)*((int*)*(int*)(&b)+2); // Base::h() Show=(Fun)*((int*)*(int*)(&b)+3); // Base::h() f(); g(); h(); Show(); return 0; }