Standard, um Klassen entweder "final" zu machen oder ihnen einen virtuellen Destruktor zu geben?
Klassen mit nicht virtuellen Destruktoren sind eine Fehlerquelle, wenn sie als Basisklasse verwendet werden (wenn ein Zeiger oder ein Verweis auf die Basisklasse verwendet wird, um auf eine Instanz einer untergeordneten Klasse zu verweisen).
Mit dem C ++ 11-Zusatz einesfinal
Klasse, ich frage mich, ob es sinnvoll ist, die folgende Regel festzulegen:
Jede Klasse muss eine dieser beiden Eigenschaften erfüllen:
markiert werdenfinal
(falls es (noch) nicht geerbt werden soll)have einen virtuellen Destruktor (von dem er geerbt wird (oder werden soll))Wahrscheinlich gibt es Fälle, in denen keine dieser beiden Optionen sinnvoll ist, aber ich denke, sie können als Ausnahmen behandelt werden, die sorgfältig dokumentiert werden sollten.