c++ - 使用继承来减少重复代码的缺点是什么?

标签 c++ inheritance visual-c++

我目前正在为我正在进行的项目编写一系列专用数据结构类,我注意到它们或多或少都共享几个完全相同的属性和函数。

我既可以忍受重复代码,也可以让它们从共享基类继承,这样代码总量就会减少很多(这使得整个事情更易于维护)。但遗憾的是,我现在无法决定要做什么。

我或多或少了解继承路线的优点,但是当您将它与周围存在的重复代码进行比较时,它的缺点是什么?

对于“长期”项目,哪条路线更明智?

最佳答案

从设计的角度来看,继承违反了封装。通过从一个类继承,您将新类与父类的实现细节联系起来,对于继承类的特定实现,并非所有这些都是必需的。

例如,假设您有一个类 vehicle。此类有许多私有(private)变量,例如 weight_maxSpeed_fuelCapacity_

现在假设您继承了 bicycle 类。新类将包含与 fuelCapacity_ 相关的所有详细信息,即使它们不是必需的。这种事情可能会很痛苦,因为对象变得越来越复杂,因为破坏父类的更改也会破坏继承类,即使它们实际上并不使用代码的 volatile 部分。

一个更安全的选择是 composition .

关于c++ - 使用继承来减少重复代码的缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37150859/

相关文章:

c++ - 硬编码 double 的最低有效字节是一种好的舍入策略吗?

c++ - 连接c++文件和gnuplot并在执行后自动绘图

c# - 可访问性不一致 : base class is less accessible than child class

c++ - MSVC++ 中的 "Ch"是什么?

c++ - 在基于 Linux 的远程 HPC 上切换 gcc 版本(无 root 权限)

c++ - 到底什么时候检查 std::ifstream::good() ?

swift - 用存储的属性覆盖

python - 如何在类中声明装饰器来装饰已经装饰的继承方法?

c++ - 删除删除/删除[]

c++ - 在新选项卡中打开 URL (Internet Explorer)