C++中为什么需要虚函数?请举例说明
大家好!我刚开始学习C++,一直无法理解虚函数的意义。我读了很多文章,但脑子里还是一团浆糊。
例如,我有一个基类Animal和两个派生类Dog和Cat。我希望每个动物都有自己的声音。以下是我在没有使用虚函数时的做法:
```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(); // 总是输出 "Some generic animal sound"
}
// 清理内存...
return 0;
}
```
我期望会调用每个具体动物的speak(),但