Avatar ·

Pourquoi les fonctions virtuelles sont-elles nécessaires en C++ ? Expliquez avec un exemple

Bonjour, collègues ! Je viens de commencer à apprendre le C++ et je n'arrive pas à comprendre le sens des fonctions virtuelles. J'ai lu beaucoup d'articles, mais j'ai toujours la tête embrouillée. Par exemple, j'ai une classe de base Animal et deux classes dérivées Dog et Cat. Je veux que chaque animal ait son propre son. Voici comment je l'ai fait sans fonctions virtuelles : ```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(); // Affiche toujours "Some generic animal sound" } // Nettoyage de la mémoire... return 0; } ``` Je m'attendais à ce que speak() soit appelé pour chaque animal spécifique, mais