重複の可能性:
基本クラスのポインターを介して派生クラスのプライベート仮想メソッドを呼び出すことが許可されているのはなぜですか?
最近、私は奇妙な質問に遭遇しました。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()にアクセスできるのか疑問に思いますか?それは私用です!ではない?