Avatar ·

Warum braucht man virtuelle Funktionen in C++? Erklären Sie anhand eines Beispiels

Hallo Kollegen! Ich habe gerade angefangen, C++ zu lernen, und kann den Sinn von virtuellen Funktionen nicht verstehen. Ich habe viele Artikel gelesen, aber es bleibt trotzdem ein Durcheinander im Kopf. Zum Beispiel habe ich eine Basisklasse Animal und zwei abgeleitete Klassen Dog und Cat. Ich möchte, dass jedes Tier seinen eigenen Laut hat. So habe ich es ohne virtuelle Funktionen gemacht: ```cpp #include #include class Animal { public: void speak() { std::cout << "Some generic animal sound\n"; } }; class Dog : public Animal { public: void speak() { std::cout << "Woof!\n"; } }; class Cat : public Animal { public: void speak() { std::cout << "Meow!\n"; } }; int main() { std::vector zoo; zoo.push_back(new Dog()); zoo.push_back(new Cat()); for (auto animal : zoo) { animal->speak(); // Gibt immer "Some generic animal sound" aus } // Speicherbereinigung... return 0; } ``` Ich hatte erwartet, dass speak() für jedes spezifische Tier aufgerufen wird, aber