在Java中,您可以将方法标记为final,以使其无法覆盖.
在C#中,您必须将方法标记为虚拟,以便可以覆盖.
这是否意味着在C#中你应该将所有方法标记为虚拟(除了一些你不想被覆盖的方法),因为很可能你不知道你的类可以以什么方式被继承?
我刚刚发生了标题中的陈述.完整的报价是:
根据经验,使所有方法都是虚拟的(包括析构函数,而不是构造函数),以避免与遗漏虚拟关键字相关的问题.
我在Wrox的专业C++书中找到了这个.你可以谷歌检查.
有什么事吗?我原以为你只提供选择扩展点,而不是默认的可扩展性.例如,Herb Sutter在2001年发表的一篇文章就这么说了.从那时起,有什么改变发生了戏剧性的规范吗?(请注意,我是一名C++ noob,因此我在过去十年中没有关注过这个问题.)