c++ - 为什么通过公开继承另一个类来构建一个类是一种糟糕的做法?

标签 c++ oop inheritance

我正在为我的 OOP 期末学习,遇到了一个让我有点难过的问题。问题是“解释为什么通过公开继承 List 类来构建 Stack 类是一种糟糕的方法。描述一个更好的解决方案。”

我不确定我的回答是否正确,但是否因为“公开继承...”?并且最好改为私有(private)继承,这样除了 Stack 之外没有其他类知道继承?

最佳答案

如果派生类公开继承自基类,则派生类基类的一个实例,可能具有一些额外的功能或重写的功能。在堆栈和列表的情况下,堆栈不是列表 - 它在逻辑上不执行列表操作,如搜索、连接、反转等 - 因此从列表继承不是一个好主意。

您可以在这里使用私有(private)继承,但这不是一个特别优雅的解决方案。相反,您可以通过将列表作为私有(private)数据成员来实现堆栈。这就是为什么您经常听到“更喜欢组合(拥有私有(private)数据成员)而不是继承”的原因。

希望这对您有所帮助!

关于c++ - 为什么通过公开继承另一个类来构建一个类是一种糟糕的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23036530/

相关文章:

python - python类/子类继承背后的基本原理

java - 实际对象的类型和对象引用之间的继承关系

c# - Windows窗体继承

c++ - 为什么转换为 std::function 没有编译错误

c++ - 如何使用 libssh 运行 makefile?

c++ - 如何使用 Python 2.7.2 将 C++ 枚举转换为 ctypes.Structure?

c# - 泛型实现中的值和引用类型

c++ - 应用程序中有很多线程会适得其反吗?

java - 为什么我无法在 Java 中实例化扩展类的实例?

对象本身作为参数的对象上的 C++ 调用方法