是否存在任何损害或被认为是不好的设计,以先发制人的方式在未完成的类层次结构中导出当前“处于底层”(即衍生得最多)的类?是否有充分的理由让人们想要等到实际需要虚拟继承(即,当有人决定扩展层次结构并导致钻石时)?
答案 0 :(得分:3)
在实际需要之前,我会避免虚拟继承。当您使用虚拟继承时,您正在泄漏您在类上构建的部分抽象,特别是如何初始化基类,方法是将对虚拟基础的调用强制转换为派生类型最多。
答案 1 :(得分:2)
它增加了不需要它的系统的复杂性。
当您为代码库添加功能或功能以满足未来需求时,您通常会错过目标。有时候,某些功能确实需要一天 - 即使不是今天 - 但在许多情况下它不会。结果是大型,复杂的类更难以理解,更难以调试,维护和扩展,并且可能在效率方面花费更多。
KISS principle存在是有原因的。它使您的代码不会成为Rube Goldberg machine。