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