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(
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs