class BaseClass
{
virtual void g()
{
cout<<"BaseClass:g()"<<endl;
}
private:
virtual void f()
{
cout<<"BaseClass:f()"<<endl;
}
};
class DeriveClass:public BaseClass
{
virtual void g()
{
cout<<"DeriveClass:g()"<<endl;
}
private:
virtual void h()
{
cout<<"DeriveClass:h()"<<endl;
}
};
typedef void (*Fun)(void) ;
int _tmain(int argc, _TCHAR* argv[])
{
DeriveClass b;
Fun pFun;
for(int i = 0; i<3; ++i)//why the variable is 3?
{
pFun = (Fun)*((int*)*(int*)(&b)+i);// I don't know this?
pFun();
}
system("pause");
return 0;
}
class BaseClass { virtual void g() { cout<<BaseClass:g()<<endl; } private: virtual void f() {
Share
This is a question to see if you understand about VTABLEs.
This tutorial http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ not only uses this example code but explains the answer.