#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()?