【为什么】override关键字表示该函数会覆盖基类中的虚函数

简介: 【为什么】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"; } // 重写父类虚函数
};

image.gif

在这个例子中,我们使用了override关键字来覆盖Shape类中的虚函数 getArea() 和 getName(). 对于函数 getArea(), 我们使用关键字override以实现纯虚函数,在子类中继承必须实现该函数,同时也确保其参数签名与基类相同;对于函数 getName(), 我们再次使用override关键字进行了函数的重写

相关文章
|
Web App开发 JavaScript iOS开发
[√]使用vscode开发油猴Tampermonkey脚本
[√]使用vscode开发油猴Tampermonkey脚本
2071 0
|
弹性计算
2024年阿里云免费云服务器及学生云服务器申请教程参考
2024年阿里云继续推出免费学生云服务器与免费试用云服务器,其中学生云服务器最长可免费7个月(1个月首次领用+6个月免费续领),免费试用云服务器分为个人免费云服务器和企业免费云服务器,最长免费试用时长是3个月。下面小编来介绍一下阿里云免费云服务器及学生云服务器的申请教程。
55113 54
2024年阿里云免费云服务器及学生云服务器申请教程参考
|
11天前
南京观海微电子---PCIe协议接口
本文介绍了PCIe总线的引脚定义、协议架构及TLP数据包传输机制。涵盖物理层、数据链路层与事务层的功能,详解TLP封装与解包流程,以及各层在数据传输中的作用。
南京观海微电子---PCIe协议接口
|
虚拟化 数据中心 Windows
Microsoft Exchange Server SE RTM - 本地部署的企业级电子邮件解决方案
Microsoft Exchange Server SE RTM - 本地部署的企业级电子邮件解决方案
234 0
Microsoft Exchange Server SE RTM - 本地部署的企业级电子邮件解决方案
|
9月前
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
799 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
872 0
|
9月前
|
人工智能 固态存储 iOS开发
5分钟搞定Photoshop 2025安装:官方下载+许可证激活避坑指南
Adobe Photoshop 2025 是 Adobe 公司推出的最新图像处理软件,广泛应用于平面设计、摄影后期和 UI 设计等领域。其核心功能包括智能 AI 工具(一键抠图、生成填充等)、高效工作流(优化图层管理与色彩调整)、跨平台兼容(支持 Windows 11 和 macOS 15)以及云协作功能(与 Adobe Creative Cloud 集成)。本文详细介绍软件的安装流程、系统要求、正版激活方法及常见问题解决方案,并提供扩展学习资源,帮助用户更好地掌握这款强大工具。
34667 3
|
10月前
|
机器学习/深度学习 存储 人工智能
2025年NVIDIA RTX 4090云服务器租赁价格与选型指南
本文探讨了在主流云服务商尚未提供RTX 4090实例的背景下,如何选择高性能GPU服务器。分析了市场现状、替代方案性能,并推荐阿里云的GN7i(NVIDIA A10)、GN6v(NVIDIA V100)等实例,提供了成本优化策略与选型建议,确保用户在AI训练、图形渲染等场景中实现效率和成本的最佳平衡。
|
JSON 数据可视化 数据挖掘
Polars函数合集大全:大数据分析的新利器
Polars函数合集大全:大数据分析的新利器
806 1
|
存储 JSON Java
SpringBoot @Value 读取配置,太强大了
SpringBoot @Value 读取配置,太强大了
232 0