Sobes.tech
Junior — Middle
118

Koja je uloga ključne reči 'virtual' pri deklaraciji destruktora u programskom jeziku C++?

Компаније где су питане
МТСМТС

Одговор од АИ

sobes.tech АИ

Ключевое слово 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()
}