3

在未完成的类层次结构中抢先派生当前“位于底部”(即派生最多的)的虚拟类是否有任何危害或被认为是糟糕的设计?是否有充分的理由要等到真正需要虚拟继承(即,当有人决定扩展层次结构并产生菱形时)?

4

2 回答 2

3

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

于 2011-06-01T13:35:59.147 回答
2

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

当您根据未来的需求向代码库添加功能或特性时,您通常会错过目标。有时,确实有一天会需要该功能——即使不是今天——但在许多情况下它不会。结果是大而复杂的类更难理解,更难调试、维护和扩展,并且在效率方面可能成本更高。

KISS 原则的存在是有原因的。它可以防止您的代码成为Rube Goldberg 机器

于 2011-06-01T13:43:26.053 回答