Avatar ·

Por que funções virtuais são necessárias em C++? Explique com um exemplo

Olá, colegas! Acabei de começar a estudar C++ e não consigo entender o sentido das funções virtuais. Li muitos artigos, mas ainda fica uma confusão na cabeça. Por exemplo, tenho uma classe base Animal e duas classes derivadas Dog e Cat. Quero que cada animal tenha seu próprio som. Fiz assim sem funções virtuais: ```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(); // Sempre imprime "Some generic animal sound" } // Limpeza de memória... return 0; } ``` Eu esperava que speak() fosse chamado para cada animal específico, mas