在未完成的类层次结构中的“最终”类上使用虚拟继承
Posted
技术标签:
【中文标题】在未完成的类层次结构中的“最终”类上使用虚拟继承【英文标题】:Using virtual inheritance on "final" classes in unfinished class hierarchies 【发布时间】:2011-06-01 13:23:18 【问题描述】:在未完成的类层次结构中抢先派生当前“位于底部”(即派生最多的)的虚拟类是否有任何危害或被认为是糟糕的设计?是否有充分的理由要等到真正需要虚拟继承(即,当有人决定扩展层次结构并产生菱形时)?
【问题讨论】:
【参考方案1】:在实际需要之前,我会避免使用虚拟继承。当您使用虚拟继承时,您正在泄漏您在类上构建的部分抽象,特别是您如何初始化基类,通过强制对虚拟基类的调用到最派生的类型。
【讨论】:
通常的建议是只使用“纯”接口的虚拟继承,通常没有用户定义的构造函数。【参考方案2】:它增加了不需要它的系统的复杂性。
当您为代码库添加功能或特性以预测未来的需求时,您通常会错过目标。有时,确实有一天会需要该功能——即使不是今天——但在许多情况下它不会。结果是大而复杂的类更难理解,更难调试、维护和扩展,并且在效率方面可能成本更高。
KISS principle 的存在是有原因的。它可以防止您的代码变成Rube Goldberg machine。
【讨论】:
虚拟继承复杂吗?以上是关于在未完成的类层次结构中的“最终”类上使用虚拟继承的主要内容,如果未能解决你的问题,请参考以下文章