override关键字表示该函数会覆盖基类中的虚函数

发布时间 2023-03-24 16:04:53作者: 朱英浩

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关键字进行了函数的重写