如何访问基类中的私有虚函数

时间:2011-07-22 09:57:38

标签: visual-c++

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;
}

2 个答案:

答案 0 :(得分:1)

我的观点是,使用“C”编码技术和“C ++”面向对象编程非常脏。

如果您需要访问班级成员,请将其标记为公开。

_tmain函数通过方法指针访问你的3个方法。

答案 1 :(得分:0)

这是一个问题,看你是否了解VTABLE。

本教程http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/不仅使用了此示例代码,还解释了答案。