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