Everything: Add -Wnon-virtual-dtor flag

This flag warns on classes which have `virtual` functions but do not
have a `virtual` destructor.

This patch adds both the flag and missing destructors. The access level
of the destructors was determined by a two rules of thumb:
1. A destructor should have a similar or lower access level to that of a
   constructor.
2. Having a `private` destructor implicitly deletes the default
   constructor, which is probably undesirable for "interface" types
   (classes with only virtual functions and no data).

In short, most of the added destructors are `protected`, unless the
compiler complained about access.
This commit is contained in:
Nicholas-Baron
2021-04-15 10:43:29 -07:00
committed by Andreas Kling
parent b75d2d36e1
commit c4ede38542
Notes: sideshowbarker 2024-07-18 20:17:38 +09:00
21 changed files with 57 additions and 0 deletions

View File

@@ -48,6 +48,8 @@ public:
HashFunction& hasher() { return m_hasher; }
protected:
virtual ~Code() = default;
HashFunction m_hasher;
};