# include <iostream>
using namespace std;
class A
{
public:
virtual void f()
{
cout << "A::f()" << endl;
}
};
class B:public A
{
private:
virtual void f()
{
cout << "B::f()" << endl;
}
};
int main()
{
A *ptr = new B;
ptr->f();
return 0;
}
このコードは正しく機能し、B::f() を出力します。それがどのように機能するかは知っていますが、なぜこのコードが許可されているのですか?