【发布时间】:2012-08-16 12:20:57
【问题描述】:
可能重复:
Why is it allowed to call derived class' private virtual method via pointer of base class?
最近遇到一个奇怪的问题,请参考以下代码:
#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()?是私人的!不是吗?
【问题讨论】:
-
它不适用于您访问它的课程
-
A::disp是公开的;这是 main 访问的唯一disp。
标签: c++