繁体   English   中英

C ++:高级层次结构

[英]C++: tall class hierarchies

拥有级别层次结构的运行时缺点是什么?

让我们调用H层次结构的高度 (即:遍历从基类到叶子的类数)。

dynamic_cast将花费更多:它花费O(H)

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

主要问题是可维护性。 深层次结构可能未正确建模。 超过3-4级的任何东西都应该让你收到警报。 你可能来自具体的课程,你永远不应该做的事情( Liskov Substitution原则不允许这样做)。 如果您的基类充满了virtual函数(我的意思不是纯粹的),那么重构将很困难。

将基类拆分为几个不同的接口( Interface Segregation )。 首选组合而不是继承(GoF软件设计的基本规则 )。

个人建议:尝试在没有dynamic_cast情况下进行编程。 当我还是一名C ++开发人员时,我能够在没有dynamic_cast情况下完全编程。 我在适当的地方使用了设计模式,工厂, 访客等。没有演员阵容,生活更加简单:-)。

祝好运!

所有操作都可以在O(1)时间内实现,除了dynamic_cast之外,它们通常都是。 对于静态链接库,最后一个可以在O(1)时间内实现,请参见此处

叶类的对象的构造和销毁需要更长的时间,因为层次结构中的所有构造函数都被调用(从基类到叶类)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM