私有继承和访问

时间:2015-03-21 22:28:39

标签: c++

我在书的后面看了下面的这个问题,让我有点困惑。这是假的吗?

在私有继承中,基类的所有公共成员和受保护成员都可以在派生类中访问,但不能通过派生类访问。

3 个答案:

答案 0 :(得分:1)

这是事实。子类可以在内部使用基类方法。但是,无法从派生类的实例访问基类的方法。

void Subclass::baseClassMethodOverride()
{
    useBaseClassMethod(); //<---- ALLOWED
}

int main()
{
    SubClass instance;
    instance.useBaseClassMethod(); //<-----NOT ALLOWED
}

答案 1 :(得分:1)

那是真的。

如果您有publicprotected成员,则可以在派生类中访问它们,而不管继承的访问修饰符

答案 2 :(得分:1)

根据定义,私有继承是什么。例如,N4140解释说:

  

§11.2/ 1 [...]如果一个类被声明为另一个类的基类   使用private访问说明符public和{}的类   基类的protected个成员可以private访问   派生类的成员 115

此外,

  

§11/ 1班级成员可以

     

- private;也就是说,它的名称只能由成员和朋友使用   声明它的类。

短语“但无法通过派生类访问”。有点模糊,但如果预期的含义是“除了friend s之外无法在派生类之外访问”,那么它就是真的。

注意:将访问说明符视为继承的附件。即,私有继承意味着它继承的是私有的,而不是它继承私有成员。

相关问题