modernize-use-override

在覆盖的虚函数中添加 override(在 C++11 中引入),并从这些函数中删除 virtual,因为它不再需要。

virtual 在非基类实现中用于帮助指示用户某个函数是虚函数。C++ 编译器不使用此项来表示覆盖的函数。

在 C++11 中引入了 overridefinal 关键字,允许以适当的方式标记覆盖的函数。它们的存在允许编译器验证覆盖函数是否正确覆盖了基类实现。

这很有用,因为当以下情况发生时,编译器可以生成编译时错误:

  • 基类实现函数签名发生变化。

  • 用户没有使用正确的签名创建覆盖。

选项

IgnoreDestructors

如果设置为 true,此检查将不会诊断析构函数。默认值为 false

IgnoreTemplateInstantiations

如果设置为 true,则指示此检查忽略作为模板实例化的一部分的虚函数覆盖。默认值为 false

AllowOverrideAndFinal

如果设置为 true,此检查将不会诊断 overridefinal 冗余。当代码需要通过具有警告/错误检查标志的编译器编译时,这很有用,这些标志要求在覆盖的成员上显式使用 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