LINUX.ORG.RU

История изменений

Исправление 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