Класс не может вести себя полиморфно для удаления объектов производного класса
Деструктор базового класса, не виртуальный, происходит, когда класс имеет функции virtual
, но не деструктор virtual
.
Присутствие функций virtual
указывает, что класс предназначается для использования в качестве базового класса. Однако, если класс не имеет деструктора virtual
, он не может вести себя полиморфно для удаления объектов производного класса.
Если указатель на этот класс относится к объекту производного класса, и вы используете указатель, чтобы удалить объект, только деструктор базового класса называется. Дополнительные средства, выделенные в производном классе, не высвобождены и могут вызвать утечку ресурсов.
Одна возможная фиксация должна всегда использовать деструктор virtual
в классе, который содержит функции virtual
.
Группа: Объектно-ориентированный |
Язык: C++ |
Значение по умолчанию: на |
Синтаксис командной строки: DTOR_NOT_VIRTUAL |
Влияние: носитель |