override关键字表示该函数会覆盖基类中的虚函数
override关键字表示该函数会覆盖基类中的虚函数,即在派生类中重新实现了基类中的同名虚函数。
在C++中,派生类可以重载其父类的虚函数。使用override关键字可以很好地指出该函数是目标函数,因为当以下情况出现时,使用override关键字会在编译时帮助我们检查错误:
如果父类中没有具有相同签名的虚函数,则会发生编译错误。
如果函数签名参数与基类中的虚函数不匹配,则会发生编译错误。
如果该函数非虚函数,则会发生编译错误。
当我们使用override关键字覆盖基类中的虚函数时,我们可以确保函数签名和基类中的虚函数相同,并且将函数定义为virtual函数。这可以提高代码的可读性和可维护性,以及减少在虚函数的调用链中引入错误的风险。
例如,在以下示例中,我们在派生类中使用了override关键字:
// 基类
class Shape{
public:
virtual double getArea() const = 0; // 纯虚函数
virtual std::string getName() const { return "Shape"; }
};
// 派生类
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() const override { return 3.14 * radius * radius; } // 实现父类纯虚函数
std::string getName() const override { return "Circle"; } // 重写父类虚函数
};
在这个例子中,我们使用了override关键字来覆盖Shape类中的虚函数 getArea() 和 getName(). 对于函数 getArea(), 我们使用关键字override以实现纯虚函数,在子类中继承必须实现该函数,同时也确保其参数签名与基类相同;对于函数 getName(), 我们再次使用override关键字进行了函数的重写