Quand faut-il utiliser les destructeurs virtuels en C++ ?
Bonjour à tous ! Je suis un développeur C++ débutant, et une question me taraude. Je viens de commencer à me familiariser avec le polymorphisme et l'héritage, et je suis tombé sur cette situation.
Supposons que j'ai une classe de base `Animal` et une classe dérivée `Dog`. Je veux utiliser des pointeurs intelligents (shared_ptr) pour la gestion automatique de la mémoire. Le code ressemble à ceci :
```cpp
#include
#include
class Animal {
public:
Animal() { std::cout << "Animal created\n"; }
~Animal() { std::cout << "Animal destroyed\n"; }
virtual void speak() { std::cout << "Animal sound\n"; }
};
class Dog : public Animal {
public:
Dog() { std::cout << "Dog created\n"; }
~Dog() { std::cout << "Dog destroyed\n"; }
void speak() override { std::cout << "Woof!\n"; }
};
int main(