Sobes.tech
Junior — Middle

Avez-vous de l'expérience dans l'utilisation de destructeurs virtuels dans vos projets?

sobes.tech IA

Réponse de l'IA

Les destructeurs virtuels en C++ sont utilisés pour libérer correctement les ressources lors de la suppression d'objets via un pointeur vers la classe de base. Si la classe possède des fonctions virtuelles et qu'une héritage est prévu, le destructeur doit être virtuel pour que lors de l'appel à delete via le pointeur de base, le destructeur de la classe dérivée soit appelé.

Exemple:

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

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

int main() {
    Base* obj = new Derived();
    delete obj; // appellera Derived::~Derived() puis Base::~Base()
}

Dans mes projets, j'ai utilisé des destructeurs virtuels pour une gestion correcte de la mémoire et des ressources dans des hiérarchies de classes, afin d'éviter les fuites et les comportements indéfinis.