.. index:: Add-Override Transform ====================== 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 :option:`-add-override` option of :program:`clang-modernize`. For example: .. code-block:: c++ 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. .. code-block:: c++ class B : public A { public: virtual void h() const = 0; // The declaration of h is NOT transformed to virtual void h() const override = 0; };