这个问题已经在这里有了答案:
已关闭8年。
最近,我遇到一个奇怪的问题,请引用以下代码:
#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()?是私有(private)的!是不是
最佳答案
disp()是公共(public)的,因为您通过A *调用它,并且disp()在A中被声明为公共(public)。由于它是虚拟的,因此会调用B的disp版本,但这并不影响它是公共(public)的还是私有(private)的。
关于c++ - 为什么我可以在C++中从外部访问私有(private)方法? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11987003/