Sobes.tech
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.