得到以下简单的结构:
class Base {
public:
virtual void foo() { std::cout << "Base" << std::endl; }
};
class Derived1 : public Base {
public:
void foo() override { std::cout << "Derived1" << std::endl; }
void boo() {}
};
class Derived2 : public Base {
public:
void foo() override { std::cout << "Derived2" << std::endl; }
};
int main(){
Base* p1 = new Derived1();
Base* p2 = new Derived2();
p1->foo();
p1->boo();
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:当我不希望 Derived2 的对象可以访问它时,如何访问 Derived1::boo() 函数(使用指针 p1,所以我仍然具有多态性)?