#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가 금지하지 않는 것은 무엇입니까? –