Sobes.tech
Junior — Middle

Máte zkušenosti s používáním virtuálních destruktorů ve svých projektech?

sobes.tech AI

Odpověď od AI

Виртуальные деструкторы в C++ используются для правильного освобождения ресурсов при удалении объектов через указатель на базовый класс. Если в классе есть виртуальные функции и предполагается наследование, деструктор должен быть виртуальным, чтобы при вызове delete через базовый указатель вызвался деструктор производного класса.

Пример:

class Base {
public:
    virtual ~Base() { std::cout << "Base destructor" << std::endl; }
};

class Derived : public Base {
public:
    ~Derived() override { std::cout << "Derived destructor" << std::endl; }
};

int main() {
    Base* obj = new Derived();
    delete obj; // вызовется Derived::~Derived() и затем Base::~Base()
}

В моих проектах я использовал виртуальные деструкторы для корректного управления памятью и ресурсами в иерархиях классов, чтобы избежать утечек и неопределенного поведения.