【发布时间】: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