【发布时间】:2020-01-19 12:04:00
【问题描述】:
给定两个抽象类 A 和 B,如何使 A 的公共成员函数只能被 B 及其派生类访问?即
class A {
public:
virtual ~A(){}
virtual void foo() = 0; // foo only accessible to B and its subclasses; foo is private to others
};
class B {
virtual ~B(){}
virtual void goo() = 0;
};
【问题讨论】:
-
如果你想让它公开,你不能。公开意味着每个人都可以访问。
-
您可以使用受保护的函数和继承或友元函数。
-
使类
B继承A(class B : public A)然后我们将能够在B或其任何子类中定义foo。 -
如果有人愿意,您可以使用
#define private public和#define class struct禁用所有可访问性限制。
标签: c++ abstract-class access-modifiers