modernize-use-override¶
在覆盖的虚函数中添加 override
(在 C++11 中引入),并从这些函数中删除 virtual
,因为它不再需要。
virtual
在非基类实现中用于帮助指示用户某个函数是虚函数。C++ 编译器不使用此项来表示覆盖的函数。
在 C++11 中引入了 override
和 final
关键字,允许以适当的方式标记覆盖的函数。它们的存在允许编译器验证覆盖函数是否正确覆盖了基类实现。
这很有用,因为当以下情况发生时,编译器可以生成编译时错误:
基类实现函数签名发生变化。
用户没有使用正确的签名创建覆盖。
选项¶
- IgnoreDestructors¶
如果设置为 true,此检查将不会诊断析构函数。默认值为 false。
- IgnoreTemplateInstantiations¶
如果设置为 true,则指示此检查忽略作为模板实例化的一部分的虚函数覆盖。默认值为 false。
- AllowOverrideAndFinal¶
如果设置为 true,此检查将不会诊断
override
与final
冗余。当代码需要通过具有警告/错误检查标志的编译器编译时,这很有用,这些标志要求在覆盖的成员上显式使用override
,例如gcc -Wsuggest-override
/gcc -Werror=suggest-override
。默认值为 false。
- OverrideSpelling¶
指定要使用宏代替
override
。当维护也需要使用预 C++11 编译器编译的源代码时,这很有用。
- FinalSpelling¶
指定要使用宏代替
final
。当维护也需要使用预 C++11 编译器编译的源代码时,这很有用。
注意
有关使用 override
的更多信息,请参阅 https://cppreference.cn/w/cpp/language/override