C++:高层类层次结构

标签 c++ class inheritance height hierarchy

类层次结构在运行时有哪些缺点?

我们将 H 称为层次结构的高度(即:从基类到叶子要遍历多少个类)。

dynamic_cast 会花费更多:花费 O(H)

是否有其他运算符或语言功能受到影响?

最佳答案

主要问题是可维护性。很深的类层次结构可能没有正确建模。任何超过 3-4 级别的内容都会让您收到警报。您可能是从具体类派生的,这是您永远不应该做的事情(Liskov Substitution principle 不允许这样做)。如果您的基类充斥着函数(我的意思是纯函数),那么重构将很困难。

将您的基类拆分为几个不同的接口(interface) (Interface Segregation)。更喜欢组合而不是继承(GoF fundamental rule 软件设计)。

个人建议:尝试在没有dynamic_cast 的情况下进行编程。当我还是一名 C++ 开发人员时,我完全可以在没有 dynamic_cast 的情况下进行编程。我在适当的地方使用了设计模式,工厂,visitors等等。没有类型转换的生活要简单得多:-)。

祝你好运!

关于C++:高层类层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4345357/

相关文章:

C++ 映射 - 表达式必须是整型常量表达式

c++ - 真值表输入生成

python - 如何在Python 3中重用父类(super class)方法的变量?

c++ - C++中二维数组中的对象切片

c++ - 制作 shared_ptr 的拷贝时会发生什么?

c++ - 观察给定的精度,快速将 double 转换为字符串

java - 如何解决java聚合中的错误输出错误?

c++ - 我的代码的第二部分没有运行,我是使用类的新手

c++ - 如何在单链表中正确使用protected

c# - 一个类是否可能只继承一些(不是全部)基类成员?