Sobes.tech
Назад к вопросам
Junior — Middle
85

Какова роль ключевого слова 'virtual' при объявлении деструктора в языке программирования C++?

Компании, где спрашивали
МТСМТС

Ответ от нейросети

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