class Base { public: virtualvoid f(){cout<<"Base::f()"<<endl;} virtualvoid g(){cout<<"Base::g()"<<endl;} virtualvoid h(){cout<<"Base::h()"<<endl;} };
class Derive:public Base { virtualvoid f1(){cout<<"Derive::f1()"<<endl;} virtualvoid g1(){cout<<"Derive::g1()"<<endl;} virtualvoid h1(){cout<<"Derive::h1()"<<endl;} };
int main() { typedefvoid(*Fun)();
Base *b =new Derive; cout<<*(int*)b <<endl;
Fun funf =(Fun)(*(int*)*(int*)b);
Fun fung =(Fun)(*((int*)*(int*)b + 1));
Fun funh =(Fun)(*((int*)*(int*)b + 2));
Fun funf1 =(Fun)(*((int*)*(int*)b + 3));
Fun fung1 =(Fun)(*((int*)*(int*)b + 4));
Fun funh1 =(Fun)(*((int*)*(int*)b + 5));
class Base { public: virtualvoid f(){cout<<"Base::f()"<<endl;} virtualvoid g(){cout<<"Base::g()"<<endl;} virtualvoid h(){cout<<"Base::h()"<<endl;} };
class Derive:public Base { virtualvoid f(){cout<<"Derive::f()"<<endl;} virtualvoid g1(){cout<<"Derive::g1()"<<endl;} virtualvoid h1(){cout<<"Derive::h1()"<<endl;} };
int main() { typedefvoid(*Fun)();
Base *b =new Derive; cout<<*(int*)b <<endl;
Fun funf =(Fun)(*(int*)*(int*)b);
Fun fung =(Fun)(*((int*)*(int*)b + 1));
Fun funh =(Fun)(*((int*)*(int*)b + 2));
Fun fung1 =(Fun)(*((int*)*(int*)b + 3));
Fun funh1 =(Fun)(*((int*)*(int*)b + 4));