Sobes.tech
Junior — Middle
133

Wat is de rol van het sleutelwoord 'virtual' bij het declareren van een destructor in de programmeertaal C++?

Bedrijven waar gevraagd werd
МТСМТС

Antwoord van AI

sobes.tech AI

Ключевое слово virtual при объявлении деструктора в C++ гарантирует, что при удалении объекта через указатель на базовый класс будет вызван деструктор именно производного класса. Это важно для корректного освобождения ресурсов и предотвращения утечек памяти.

Если деструктор базового класса не виртуальный, а объект удаляется через указатель на базовый класс, вызовется только деструктор базового класса, а деструктор производного класса — нет.

Пример:

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()
}