Add-Override Transform¶
The Add-Override Transform adds the override specifier to member functions that override a virtual function in a base class and that don’t already have the specifier. The transform is enabled with the -add-override option of clang-modernize. For example:
class A {
public:
virtual void h() const;
};
class B : public A {
public:
void h() const;
// The declaration of h is transformed to
void h() const override;
};
Using Expands-to-Override Macros¶
Like LLVM’s LLVM_OVERRIDE, several projects have macros that conditionally expand to the override keyword when compiling with C++11 features enabled. To maintain compatibility with non-C++11 builds, the Add-Override Transform supports detection and use of these macros instead of using the override keyword directly. Specify -override-macros on the command line to the Modernizer to enable this behavior.
Known Limitations¶
- This transform will not insert the override keyword if a method is pure. At the moment it’s not possible to track down the pure specifier location.
class B : public A {
public:
virtual void h() const = 0;
// The declaration of h is NOT transformed to
virtual void h() const override = 0;
};