Junior — Middle
Van tapasztalata virtuális destruktorok használatában a projektjeiben?
sobes.tech MI
Válasz az MI-től
A C++-ban a virtuális destruktorokat arra használják, hogy helyesen szabadítsák fel az erőforrásokat az objektumok törlésekor, ha a törlés egy bázissal rendelkező mutatóval történik. Ha a osztály virtuális funkciókat tartalmaz, és öröklés várható, akkor a destruktor virtuálisnak kell lennie, hogy a delete hívásakor a bázismutató által hívott destruktor a származtatott osztály destruktorát hívja meg.
Példa:
class Base {
public:
virtual ~Base() { std::cout << "Base destruktor" << std::endl; }
};
class Derived : public Base {
public:
~Derived() override { std::cout << "Derived destruktor" << std::endl; }
};
int main() {
Base* obj = new Derived();
delete obj; // meghívja a Derived::~Derived() és a Base::~Base() függvényeket
}
Projektjeimben virtuális destruktorokat használtam a memória és erőforrások helyes kezelésére osztályhierarchiákban, hogy elkerüljem a szivárgásokat és a nem meghatározott viselkedést.