Объявлять деструкторы виртуальными в полиморфных базовых классах. Это пункт 7 в «Эффективном C ++» Скотта Майерса . Мейерс продолжает обобщать, что если класс имеет любую виртуальную функцию, он должен иметь виртуальный деструктор, а классы, не предназначенные для базовых классов или не предназначенные для использования полиморфно, должны не объявить виртуальные деструкторы.