Junior — Middle
105
Обяснете предназначението на виртуалния деструктор в контекста на обектно-ориентираното програмиране.
Компаниите бяха попитани
Отговор от AI
sobes.tech AI
Виртуальный деструктор в C++ используется для корректного освобождения ресурсов при удалении объекта через указатель на базовый класс. Если базовый класс имеет виртуальный деструктор, то при вызове delete через указатель на базовый класс будет вызван деструктор производного класса, что гарантирует правильное разрушение объекта и предотвращает утечки памяти.
Пример:
class Base {
public:
virtual ~Base() { std::cout << "Base destructor\n"; }
};
class Derived : public Base {
public:
~Derived() { std::cout << "Derived destructor\n"; }
};
int main() {
Base* obj = new Derived();
delete obj; // вызовется сначала Derived::~Derived, затем Base::~Base
}
Без виртуального деструктора вызов delete через указатель на базовый класс приведёт к вызову только базового деструктора, что может вызвать проблемы с освобождением ресурсов производного класса.