Avatar ·

Wann sollte man virtuelle Destruktoren in C++ verwenden?

Hallo zusammen! Ich bin ein C++-Anfänger und habe eine Frage, die mich beschäftigt. Ich habe gerade angefangen, mich mit Polymorphismus und Vererbung zu beschäftigen, und bin auf folgende Situation gestoßen. Angenommen, ich habe eine Basisklasse `Animal` und eine abgeleitete Klasse `Dog`. Ich möchte Smart Pointer (shared_ptr) für die automatische Speicherverwaltung verwenden. Der Code sieht so aus: ```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(