0

我在不久的将来要考试,我真的被一个找不到答案的问题困住了。

假设一个类CI继承类Sup为:

class CI: protected Sup
{};

为什么这不是分类遗产?

在此先感谢,感谢所有帮助。

4

1 回答 1

4

在C++中,只有公有继承才被认为是真正的继承,即子类将继承其超类的接口(即IS-A关系)。一个体面的继承应该满足Liskov 替换原则

至于受保护/私有继承,它们实际上是一种包含/组合,因为派生类将隐藏其基类的接口(作为受保护/私有成员)并且仅使用基类的实现(即 HAS-A 或 Is-已实施的条款关系)。

您可以参考 SO 上的这个问题以获得更好的理解:为什么我们实际上需要 C++ 中的私有或受保护继承?

也就是说,受保护/私有继承是 C++ 中一个有争议的特性,它被 Java 和 C# 等 C++ 继承者所抛弃。

于 2013-01-16T15:31:33.863 回答