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.