在未完成的类层次结构中对“final”类使用虚拟继承

时间:2011-06-01 13:23:19

标签: c++ inheritance multiple-inheritance virtual-inheritance

是否存在任何损害或被认为是不好的设计,以先发制人的方式在未完成的类层次结构中导出当前“处于底层”(即衍生得最多)的类?是否有充分的理由让人们想要等到实际需要虚拟继承(即,当有人决定扩展层次结构并导致钻石时)?

2 个答案:

答案 0 :(得分:3)

在实际需要之前,我会避免虚拟继承。当您使用虚拟继承时,您正在泄漏您在类上构建的部分抽象,特别是如何初始化基类,方法是将对虚拟基础的调用强制转换为派生类型最多。

答案 1 :(得分:2)

它增加了不需要它的系统的复杂性。

当您为代码库添加功能或功能以满足未来需求时,您通常会错过目标。有时候,某些功能确实需要一天 - 即使不是今天 - 但在许多情况下它不会。结果是大型,复杂的类更难以理解,更难以调试,维护和扩展,并且可能在效率方面花费更多。

KISS principle存在是有原因的。它使您的代码不会成为Rube Goldberg machine