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

posted @   朱英浩  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示