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