Avatar ·

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(),但