我在书的后面看了下面的这个问题,让我有点困惑。这是假的吗?
在私有继承中,基类的所有公共成员和受保护成员都可以在派生类中访问,但不能通过派生类访问。
答案 0 :(得分:1)
这是事实。子类可以在内部使用基类方法。但是,无法从派生类的实例访问基类的方法。
void Subclass::baseClassMethodOverride()
{
useBaseClassMethod(); //<---- ALLOWED
}
int main()
{
SubClass instance;
instance.useBaseClassMethod(); //<-----NOT ALLOWED
}
答案 1 :(得分:1)
那是真的。
如果您有public
或protected
成员,则可以在派生类中访问它们,而不管继承的访问修饰符
答案 2 :(得分:1)
根据定义,私有继承是什么。例如,N4140解释说:
§11.2/ 1 [...]如果一个类被声明为另一个类的基类 使用
private
访问说明符public
和{}的类 基类的protected
个成员可以private
访问 派生类的成员 115 。
此外,
§11/ 1班级成员可以
-
private
;也就是说,它的名称只能由成员和朋友使用 声明它的类。
短语“但无法通过派生类访问”。有点模糊,但如果预期的含义是“除了friend
s之外无法在派生类之外访问”,那么它就是真的。
注意:将访问说明符视为继承的附件。即,私有继承意味着它继承的是私有的,而不是它继承私有成员。