Sobes.tech
Junior — Middle

Hai esperienza nell'uso di distruttori virtuali nei tuoi progetti?

sobes.tech AI

Risposta dell'AI

I distruttori virtuali in C++ vengono utilizzati per liberare correttamente le risorse durante l'eliminazione di oggetti tramite un puntatore alla classe base. Se la classe ha funzioni virtuali e si prevede l'ereditarietà, il distruttore deve essere virtuale affinché, chiamando delete tramite il puntatore base, venga chiamato il distruttore della classe derivata.

Esempio:

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

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

int main() {
    Base* obj = new Derived();
    delete obj; // chiamerà Derived::~Derived() e poi Base::~Base()
}

Nei miei progetti, ho usato distruttori virtuali per gestire correttamente memoria e risorse nelle gerarchie di classi, per evitare perdite e comportamenti indefiniti.