¿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
No answers yet.
Inicia sesión para dejar una respuesta
Blogs