.. title:: clang-tidy - cppcoreguidelines-virtual-class-destructor

cppcoreguidelines-virtual-class-destructor
===============================================

Finds virtual classes whose destructor is neither public and virtual
nor protected and non-virtual. A virtual class's destructor should be specified
in one of these ways to prevent undefined behavior.

This check implements
`C.35 <http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-dtor-virtual>`_
from the CppCoreGuidelines.

Note that this check will diagnose a class with a virtual method regardless of
whether the class is used as a base class or not.

Fixes are available for user-declared and implicit destructors that are either
public and non-virtual or protected and virtual. No fixes are offered for
private destructors. There, the decision whether to make them private and
virtual or protected and non-virtual depends on the use case and is thus left
to the user.

Example
-------

For example, the following classes/structs get flagged by the check since they
violate guideline **C.35**:

.. code-block:: c++

  struct Foo {        // NOK, protected destructor should not be virtual
    virtual void f();
  protected:
    virtual ~Foo(){}
  };

  class Bar {         // NOK, public destructor should be virtual
    virtual void f();
  public:
    ~Bar(){}
  };

This would be rewritten to look like this:

.. code-block:: c++

  struct Foo {        // OK, destructor is not virtual anymore
    virtual void f();
  protected:
    ~Foo(){}
  };

  class Bar {         // OK, destructor is now virtual
    virtual void f();
  public:
    virtual ~Bar(){}
  };
