Junior — Middle
Heeft u ervaring met het gebruik van virtuele destructors in uw projecten?
sobes.tech AI
Antwoord van AI
Virtuele destructors in C++ worden gebruikt om resources correct vrij te geven bij het verwijderen van objecten via een pointer naar de basisklasse. Als de klasse virtuele functies heeft en er sprake is van overerving, moet de destructor virtueel zijn zodat bij het aanroepen van delete via de basispointer de destructor van de afgeleide klasse wordt aangeroepen.
Voorbeeld:
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; // roept Derived::~Derived() en vervolgens Base::~Base() aan
}
In mijn projecten heb ik virtuele destructors gebruikt om correct geheugen en resources te beheren in classhiërarchieën, om leaks en ongedefinieerd gedrag te voorkomen.