Skip to content
  • Hans Johnson's avatar
    STYLE: Use override statements for C++11 · 898b4870
    Hans Johnson authored
    Describe function overrides using the override keyword from C++11.
    
    -----
    https://stackoverflow.com/questions/39932391/virtual-override-or-both-c
    When you override a function you don't technically need to write either virtual
    or override.
    
    The original base class declaration needs the keyword virtual to mark it as
    virtual.
    
    In the derived class the function is virtual by way of having the ¹same type as
    the base class function.
    
    However, an override can help avoid bugs by producing a compilation error when
    the intended override isn't technically an override. For instance, the function
    type isn't exactly like the base class function. Or that a maintenance of the
    base class changes that function's type, e.g. adding a defaulted argument.
    
    In the same way, a virtual keyword in the derived class can make such a bug
    more subtle by ensuring that the function is still virtual in the further
    derived classes.
    
    So the general advice is,
    
    Use virtual for the base class function declaration.  This is technically
    necessary.
    
    Use override (only) for a derived class' override.  This helps maintenance.
    -----
    
    Remove 'virtual' is implied when 'override' is specified, so remove the
    redundant specification.
    
    cd \${BLDDIR}
    run-clang-tidy.py -extra-arg=-D__clang__ -checks=-*,modernize-use-override  -header-filter=.* -fix
    898b4870