¿Predeterminado para hacer las clases `final` o darles un destructor virtual?

Las clases con destructores no virtuales son una fuente de errores si se usan como una clase base (si se usa un puntero o una referencia a la clase base para referirse a una instancia de una clase secundaria).

Con la adición de C ++ 11 de unfinal clase, me pregunto si tiene sentido establecer la siguiente regla:

Cada clase debe cumplir una de estas dos propiedades:

ser marcadofinal (si no está (todavía) destinado a ser heredado de)tener un destructor virtual (si se hereda)

Probablemente hay casos en los que ninguna de estas dos opciones tiene sentido, pero supongo que podrían tratarse como excepciones que deberían documentarse cuidadosamente.

Respuestas a la pregunta(3)

Su respuesta a la pregunta