C++中的虚函数的作用主要是实现了多态的机制,简单来说就是用父类的指针指向其子类的实例,然后通过父类的指针调用子类的成员函数实现。
先定义两个类:动物类(Animal),具备吃普通食物的行为,猫类(Cat)具备吃老鼠的行为。
在主函数里如此调用代码:
这里没有用到virtual关键字,它们的输出行为符合预期:一个吃普通食物,一个吃老鼠。现在稍微更改一下,以便通过中间函数(一个简单的函数的示例)调用eat():
此时在主函数里调用如下:
把一只猫送到func(),但它不吃老鼠,这跟设想的结果完全不一样,解决办法就是给动物类的eat()函数添加virtual将其变为虚函数: