很多时候我们都会在函数的末尾看到 override 关键字。override 可以用来检查当前修饰的虚函数是否成功重写父类的虚函数,也就是说,被override 修饰的虚函数必须要满足重写条件(虚函数 + 三同)。如果override修饰了子类的某个虚函数,存在两种情况会报错。
- 基类不存在 override修饰的同名函数
- 基类存在 override修饰的同名函数,但该同名函数不是虚函数
// 场景一:基类不存在 override修饰的同名函数
class Person
{
public:
};
class Student:public Person
{
public:
virtual void BuyTicket() override {} // 报错
};
// 场景二:基类存在 override修饰的同名函数,但该同名函数不是虚函数
class Person
{
public:
void BuyTicket() {}
};
class Student:public Person
{
public:
virtual void BuyTicket() override {} // 报错
};