【发布时间】:2012-03-28 10:44:24
【问题描述】:
我只是偶然发现了标题中的陈述。完整的报价是:
根据经验,将所有方法设为虚拟(包括 析构函数,但不是构造函数)以避免与 省略 virtual 关键字。
我在 Wrox 的书Professional C++中找到了这个。 You can google it to check.
这有什么关系吗?我原以为您只会提供选择的扩展点,而不是默认的可扩展性。例如,a 2001 article by Herb Sutter says so。从那以后,有什么发生了巨大的变化,使相反的统治规范成为了主流吗? (请注意,我是 C++ 菜鸟,所以在过去的十年里我没有关注过这个讨论。)
【问题讨论】:
-
我听说过几次,但没有人能够说服我遵循它。对我来说似乎有点脆弱。我倾向于同意你的分析。当然,它只会是高度主观的。
-
在类中包含第一个虚函数不会通过强制使用 vtable 或类似的东西使内部表示复杂化吗?我会认为它是“只有在你真正需要的时候才去虚拟化”。
-
...除非您正在设计游戏。
-
这是一个愚蠢的建议,我建议为了更大的利益而烧掉这本书。当没有理由做某事时,你就不应该这样做。遵循“建议”也可能会遇到问题。
-
至少在我看来,这是一个可以建设性地回答的问题。是的,最终的结论将主要是一个意见问题,但导致结论的考虑因素大多是客观的,而结论只是决定哪些最重要(在你目前的情况下)。