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;
}
答案 0 :(得分:1)
我的观点是,使用“C”编码技术和“C ++”面向对象编程非常脏。
如果您需要访问班级成员,请将其标记为公开。
_tmain函数通过方法指针访问你的3个方法。
答案 1 :(得分:0)
这是一个问题,看你是否了解VTABLE。
本教程http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/不仅使用了此示例代码,还解释了答案。