#include <iostream>
struct A
{
virtual void foo(){ std::cout << "A"; };
};
struct B : public A
{
private:
void foo() override { std::cout << "B"; }
};
int main()
{
A *p = new B;
p->foo(); // prints B
// B b;
// b.foo(); // error: foo is private
return 0;
}
// g++ -std=c++11 -Wall -Wextra -Wpedantic main.cpp && ./a.out
したがって、B.foo()
を多形的に呼び出すことはできますが、直接はできません。誰かがこの機能を使いたいと思うユースケースはありますか?プライベートな公開仮想メソッドの使用例はありますか?
また、Javaでは禁止されていないものがあります。 –