对遗产进行分类

时间:2013-01-16 15:23:48

标签: c++ inheritance

我的考试即将在不久的将来出现,我真的遇到了一个我找不到任何答案的问题。

假设类CI继承类Sup为:

class CI: protected Sup
{};

为什么这不是一个分类遗产?

提前致谢,我感谢所有人的帮助。

1 个答案:

答案 0 :(得分:4)

在C ++中,只有公共继承被认为是真正的继承,这意味着子类将继承其超类的接口(即IS-A关系)。一个体面的继承应该满足Liskov substitution principle

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

您可以在SO上提及此问题以便更好地理解:Why do we actually need Private or Protected inheritance in C++?

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