История изменений
Исправление Laz, (текущая версия) :
Я например исходя из применения класса поступаю. Если предполагается что производный класс будет храниться в указателях или ссылках на базу - то делаю вирт деструктор (если он конечно вообще нужен, недефолтный).
Если предполагается вызов деструктора через указатель на базовый класс, деструктор должен быть виртуальным. И это не рекомендация, а следование стандарту (из описания `delete`):
if the static type of the operand is different from its dynamic type, the static type shall be a base class of the operand’s dynamic type and the static type shall have a virtual destructor or the behavior is undefined
Исходная версия Laz, :
Я например исходя из применения класса поступаю. Если предполагается что производный класс будет храниться в указателях или ссылках на базу - то делаю вирт деструктор (если он конечно вообще нужен, недефолтный).
Если предполагается вызов деструктора через указатель на базовый класс, деструктор должен быть виртуальным. И это не рекомендация, а следование стандарту:
if the static type of the operand is different from its dynamic type, the static type shall be a base class of the operand’s dynamic type and the static type shall have a virtual destructor or the behavior is undefined