#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不禁止什麼。 –