modernize-use-override¶
Adds override
(introduced in C++11) to overridden virtual functions and
removes virtual
from those functions as it is not required.
virtual
on non base class implementations was used to help indicate to the
user that a function was virtual. C++ compilers did not use the presence of
this to signify an overridden function.
In C++ 11 override
and final
keywords were introduced to allow
overridden functions to be marked appropriately. Their presence allows
compilers to verify that an overridden function correctly overrides a base
class implementation.
This can be useful as compilers can generate a compile time error when:
The base class implementation function signature changes.
The user has not created the override with the correct signature.
Options¶
- IgnoreDestructors¶
If set to true, this check will not diagnose destructors. Default is false.
- IgnoreTemplateInstantiations¶
If set to true, instructs this check to ignore virtual function overrides that are part of template instantiations. Default is false.
- AllowOverrideAndFinal¶
If set to true, this check will not diagnose
override
as redundant withfinal
. This is useful when code will be compiled by a compiler with warning/error checking flags requiringoverride
explicitly on overridden members, such asgcc -Wsuggest-override
/gcc -Werror=suggest-override
. Default is false.
- OverrideSpelling¶
Specifies a macro to use instead of
override
. This is useful when maintaining source code that also needs to compile with a pre-C++11 compiler.
- FinalSpelling¶
Specifies a macro to use instead of
final
. This is useful when maintaining source code that also needs to compile with a pre-C++11 compiler.
Note
For more information on the use of override
see https://en.cppreference.com/w/cpp/language/override