调用从Base类指针私有的Derived类方法

时间:2016-12-31 14:55:03

标签: c++

#include <iostream>
using namespace std;

class B
{
    public:
    virtual void fun()
    {
        cout<<"B";
    }
};

class D:public B
{
    private:
    void fun()
    {
        cout<<"D"<<endl;
    }
};

int main() {

    D d;
    d.fun();//'error:virtual void D::fun()' is private
    B *b=new D();
    b->fun();//This Prints "D"
    return 0;
}

当我使用派生类对象调用fun()时,我得到编译器错误。但为什么我可以使用基类指针调用D :: fun()?

0 个答案:

没有答案