虚函数
定义:在基类中使用virtual关键字声明的函数,允许在派生类中重写;
虚函数是在 C++ 基类中用 virtual 关键字声明的成员函数,目的是:允许子类重写(Override)该函数后,通过基类指针 / 引用调用时,自动执行子类的重写版本,而非基类版本
简单来说,虚函数实现了 “一个接口,多种实现
没有虚函数:基类指针指向子类对象时,调用的是基类的函数(静态绑定);
有虚函数:基类指针指向子类对象时,调用的是子类的函数(动态绑定 / 晚绑定)。
演示不用虚函数时的问题,理解为什么需要虚函数
语法格式:
virtual返回值类型函数名(参数列表){
函数体
}
,虚函数的作用:
动态绑定:通过基类指针或引用调用派生类的重写函数,实现运行时多态;
虚函数的注意事项:
派生类中的虚函数:在派生类中重写虚函数时,virtual关键字可省略,但仍为虚函数;
重写规则:必须遵循函数重写的规则,即函数名、参数列表、返回值类型必须相同
不用虚函数时的问题,理解为什么需要虚函数
#include <iostream> using namespace std; // 基类:动物 class Animal { public: // 普通函数(非虚函数) void make_sound() { cout << "通用的动物叫声" << endl; } }; // 子类:猫 class Cat : public Animal { public: // 重写make_sound,但无虚函数加持 void make_sound() { cout << "喵喵喵" << endl; } }; // 子类:狗 class Dog : public