【问题标题】:Protected Inheritance in C++ [duplicate]C ++中的受保护继承[重复]
【发布时间】:2016-09-04 10:58:15
【问题描述】:

简单代码:

class A
{
private: int a;

protected: int b;

public: int c;

};

class B : protected A
{

};

class C : protected B
{

};

我知道在 B 类中,a 将保持私有且 b 和 c 受到保护。

但我感到困惑的是,C 类中的访问说明符是什么?

【问题讨论】:

  • 在这种情况下,b, c 都将变为 protected
  • 让我告诉你一些事情。我有 20 多年的 C++ 开发经验,但我仍然没有看到保护继承的用例
  • @SergeyA,不反对你的说法。但是,如果我怀疑以public 方式继承std 容器,那么protected 是我的下一个选择。因为它在大多数地方都不允许向上转换(如private),并且允许多级继承。在private 继承的情况下,只能实现1 级。下一个级别将没有所有 API。有些人完全反对派生标准容器,这是一个不同的讨论。

标签: c++ inheritance protected


【解决方案1】:

protected继承继承public成员变为protected

private 继承继承 publicprotected 成员变为 private

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 2020-09-09
    • 2016-06-12
    • 2014-06-09
    • 2014-06-29
    • 2016-09-24
    • 2023-03-03
    • 1970-01-01
    • 2015-05-16
    相关资源
    最近更新 更多