c – 具有公共非虚拟析构函数的类是否应标记为“最终”?
关闭选民,请帮助我改进问题,以便重新开放:
How can I improve this question so that it gets reopened?
Herb Sutter wrote:
根据该指南,如果您有一个具有公共非虚拟析构函数的类,则该类不应该用作基类. 但萨特也在wrote以下,暗示最终不需要使用:
另一个相关的引用,暗示现在应该使用的最终版本来自Scott Meyer的Effective C,第7项:
另一个数据点是standard library has no types marked “final”,但其原因似乎是为了避免破坏代码. 这里有一个类似的问题,但不完全重复,因为它错过了“受保护的非虚拟”选项:Default to making classes either `final` or give them a virtual destructor? 解决方法
因为它是适合某些情况的指南,但不是全部,所以为什么要“强制”它呢? 通过虚函数调用的动态多态性尚未配置,但这是非常好和不允许的继承,但这不是我们使用继承的唯一场景. C是多范式的,开始实施仅适合用例子集的窄方法是没有意义的.从我所知道的,你的建议基本上归结为禁止人们使用继承,除非他们也将使用动态多态. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |