Avatar ·

¿Por qué se necesitan funciones virtuales en C++? Explica con un ejemplo

¡Hola, colegas! Acabo de empezar a aprender C++ y no puedo entender el propósito de las funciones virtuales. He leído muchos artículos, pero todavía tengo un lío en la cabeza. Por ejemplo, tengo una clase base Animal y dos clases derivadas Dog y Cat. Quiero que cada animal tenga su propio sonido. Así es como lo hice sin funciones virtuales: ```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(); // Siempre imprime "Some generic animal sound" } // Limpieza de memoria... return 0; } ``` Esperaba que se llamara a speak() para cada animal específico, pero