Sobes.tech
Junior — Middle

Obyekt yönümlü proqramlaşdırma kontekstində virtual destruktorun məqsədini izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

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