Sobes.tech
Junior — Middle
103

Erklären Sie den Zweck des virtuellen Destructors im Kontext der objektorientierten Programmierung.

Unternehmen wurden gefragt
КасперскийКасперский

Antwort von AI

sobes.tech KI

Виртуальный деструктор в 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 через указатель на базовый класс приведёт к вызову только базового деструктора, что может вызвать проблемы с освобождением ресурсов производного класса.