Sobes.tech
Junior — Middle

Czy masz doświadczenie w używaniu destruktorów wirtualnych w swoich projektach?

sobes.tech AI

Odpowiedź od AI

Wirtualne destruktory w C++ służą do poprawnego zwalniania zasobów podczas usuwania obiektów przez wskaźnik do klasy bazowej. Jeśli klasa ma funkcje wirtualne i przewiduje się dziedziczenie, destruktor powinien być wirtualny, aby podczas wywołania delete przez wskaźnik bazowy wywołał destruktor klasy pochodnej.

Przykład:

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

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

int main() {
    Base* obj = new Derived();
    delete obj; // wywoła Derived::~Derived() a następnie Base::~Base()
}

W moich projektach używałem wirtualnych destruktorów do poprawnego zarządzania pamięcią i zasobami w hierarchiach klas, aby uniknąć wycieków i nieokreślonego zachowania.