【发布时间】:2018-05-15 15:58:12
【问题描述】:
C++ 核心指南包含关于virtual、override 和final 说明符的following advice,特别是与派生类析构函数相关:
如果基类析构函数声明为虚拟,则应避免将派生类析构函数声明为虚拟或覆盖。一些代码库和工具可能会坚持对析构函数进行覆盖,但这不是这些指南的建议。
果然,clang-tidy 是违反建议的工具之一。
如果我没有指定virtual 或override,则运行clang-tidy 会发出以下警告:
warning: annotate this function with 'override' or (rarely) 'final' [modernize-use-override]
或者,如果指定为virtual:
warning: prefer using 'override' or (rarely) 'final' instead of 'virtual' [modernize-use-override]
我的问题
鉴于指定override 具有(至少)确保您正确地将基类析构函数指定为virtual 的优势,我的问题归结为以下具体部分:
- 如果有的话,哪些论据支持不在派生类析构函数上指定
virtual或override? - 在您看来,我应该更倾向于
clang-tidy建议还是 C++ 核心指南建议?
【问题讨论】:
-
这是每个人都在谈论的问题,在每个人的脑海中,以及(有时)在每个人的卧室里。
-
这是一个很好的问题,但我认为这里离题了:这是基于意见的。你应该直接加入github上的讨论。
-
@YSC 1. 不基于意见。
标签: c++ overriding virtual destructor