clang-tidy - modernize-use-override — Extra Clang Tools 15.0.7 documentation

# Extra Clang Tools 15.0.7 documentation

## clang-tidy - modernize-use-override

# 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.

AllowOverrideAndFinal

  If set to true, this check will not diagnose `override` as redundant with `final`. This is useful when code will be compiled by a compiler with warning/error checking flags requiring `override` explicitly on overridden members, such as `gcc -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