가능한 중복은 :
최근
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
'A :: disp' is public; 그게 주인이 접근하는 유일한 'disp'야. –