title: Default to making classes either `final` or give them a virtual destructor?
body: <p>Classes with non-virtual destructors are a source for bugs if they are used as a base class (if a pointer or reference to the base class is used to refer to an instance of a child class).</p>
  
  <p>With the C++11 addition of a <code>final</code> class, I am wondering if it makes sense to set down the following rule:</p>
  
  <p>Every class must fulfil one of these two properties:</p>
  
  <ol>
  <li>be marked <code>final</code> (if it is not (yet) intended to be inherited from)</li>
  <li>have a virtual destructor (if it is (or is intended to) be inherited from)</li>
  </ol>
  
  <p>Probably there are cases were neither of these two options makes sense, but I guess they could be treated as exceptions that should be carefully documented.</p>