可能重复:
Why is it allowed to call derived class' private virtual method via pointer of base class?为什么我可以在C++从外部访问私有方法?
最近,我遇到了一个奇怪的问题,PLZ请参考下面的代码:
#include <iostream>
using namespace std;
class A
{
public:
virtual void disp() {
cout<<"A disp"<<endl;
}
};
class B : public A
{
private:
void disp() {
cout<<"B disp"<<endl;
}
};
int main()
{
A a;
a.disp();
A *b = new B();
b->disp();
}
,输出是:
A disp
B disp
我不知道为什么指针b的访问DISP()?这是私人的!不是吗?
这不是你访问它通过 – fork0 2012-08-16 12:22:07
'A :: disp'是公共的类时;这是主要访问的唯一'disp'。 – 2012-08-16 12:22:49