C++关键字override

C++中重载(overload)、重写(override,也叫做“覆盖”)和重定义(redefine,也叫作“隐藏”)的区别? 指派生类的函数屏蔽了与其同名的基类函数。特点:①函数名称相同,但是返回值可以不同。②作用域分别位于基类和派生类之中;①如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无virtual,基类的函数被隐藏。②如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有vitual关键字,此时,基类的函数被隐藏。所以,此处只要求是同名函数,不管参数列表是否相同,基类函数都会被隐藏。 阅读详情

一、什么是override

override的翻译是覆盖。实际上它在C++中可以检测哪些虚函数没有被重写并报错
注:在派生类的成员函数中使用override时,如果基类中无此函数,或基类中的函数并不是虚函数,编译器会给出相关错误信息。

二、使用步骤

先定义一个基类,基类中的func被声明为一个虚函数

#include<iostream>
using namespace std;
class Base
{
public:
	Base()
	{
		cout << "Base的构造函数的调用" << endl;
	}

	virtual void func()//多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码
	{
		cout << "Base的func的调用" << endl;
	}

	virtual ~Base()
	{
		cout << "Base的析构函数的调用" << endl;
	}
};

多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码
(纯)虚析构可以解决父类指针释放子类对象

派生类对func函数重写

class Son : public Base
{
public:
	Son()
	{
		cout << "Son的构造函数的调用" << endl;
	}

	virtual void func() override;

	~Son()
	{
		cout << "Son的析构函数的调用" << endl;
	}
};

void Son::func()
{
	cout << "Son的func函数的调用" << endl;
}

void test()
{
	Base* son = new Son;
	son->func();
	delete son;
}

int main()
{
	test();
	return 0;
}

运行结果
在这里插入图片描述

派生类对象实例化时会创建基类 构建先有父 再有子 析构反之
派生类的func覆盖重写了基类的func

今天做题时看见之前没见过的关键字override,浅浅记录一下

C++ override使用详解 C++ override从字面意思上,是覆盖的意思,实际上在C++中它是覆盖了一个方法并且对其重写,从而达到不同的作用。在我们C++编程过程中,最熟悉的就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。还有一个典型应用就是在继承中也可能会在子类覆盖父类的方法。       公有继承包含两部分:一是“接口”(interface),二是 "实现" 阅读详情

相关推荐

C++中的override关键字

在C++11中引入了override关键字,以帮助防止在覆盖虚函数时出现的一些小问题。例如,在下面的程序中就存在这样的错误。 // This program has a subtle error in the virtual functions. #include <iostream> #include <memory> using namespace std; class Base { public: virtual void func...

邹亮的博客 1481

C++ 关于override关键字使用详解

因此,只要函数签名相同,派生类的函数就可以覆盖基类的函数,无论这两个函数的实现是否相同。这就是前面所说的,普通虚函数同时继承接口和缺省实现是危险的,最好是基类中实现缺省行为 (behavior),但只有在派生类要求时才提供该缺省行为.一种方法是 纯虚函数 + 缺省实现,因为是纯虚函数,所以只有接口被继承,其缺省的实现不会被继承。这是因为非虚函数是 “静态绑定” 的,p1被声明的是 Person* 类型的指针,则通过 p1调用的非虚函数都是基类中的,既使 指向的是派生类。

nihao_2014的博客 1万+

Linux V4L2驱动开发实战:手把手教你用I2C摄像头Sensor注册一个v4l2_subdev

本文详细解析了Linux V4L2驱动开发中I2C摄像头Sensor注册v4l2_subdev的全流程,包括初始化、操作集填充、异步匹配等关键环节。通过实战案例和代码示例,帮助开发者掌握V4L2子系统下的摄像头驱动开发技巧,提升嵌入式Linux系统开发能力。

weixin_30328063的博客 419

C++-[override]关键字使用详解

本文介绍了C++ override关键字使用详解以及与重载的区别。

沐槿的博客 5万+

创意视觉项目实战:用ESP32-S3+OV5640构建智能图像流系统

本文详细介绍了如何使用ESP32-S3开发板与OV5640摄像头模块构建智能图像流系统。从硬件连接到软件配置,涵盖Arduino环境搭建、图像采集优化、WiFi视频流传输及外设集成,为开发者提供完整的实战指南,助力智能家居和机器人视觉项目开发。

tech5的博客 1293

ml307 二次开发

中移物联网旗下4g模组官方网站官方教程id=514官方客户不知道啥时候上班 早上10点也说不在服务时间内 找不到官方的sdk下载路径。

myWorld001的博客 2886

C++ 中提供的override 关键字

C++ 语言标准这些年进化的很快,许多新引入的特性我都没有用过。说实话自己也比较懒,总是觉得自己对C++ 的掌握程度已经足够应付日常的各种项目了,所以没有学习新特性的动力。而且一直觉得新引入的特性多数都属于那种“语法糖”,能够发挥的作用不大,其实是可有可无的。 不过最近编写一个小程序时代码里有个小bug,困扰了我好几天。最后在几个热心网友的帮助下才解决了。这个小bug让我认识到C++11 中提供

Ivan 的专栏 4万+

【开关电源篇】开关电源——只需这三个阶段,从电源小白到维修大神

🔌 该篇为的原创文章跳转目录,小二持续更新跳转链接,尽情关注!

2301_81299416的博客 2393

【C++关键字 override】

如果派生类重载了基类中的同名函数,则该函数将成为派生类中的虚函数,可以通过调用基类中的函数来实现该函数的功能。因此,在C++中,override关键字是非常重要的一个特性,对于实现灵活的类型重载和抽象函数的使用非常有帮助。这可能会导致一些错误,例如如果派生类中的函数签名与基类中的虚函数不完全匹配,那么这个函数可能不会被视为重写,而编译器也不会报错。它可以帮助程序员避免一些常见的错误,例如误打误写导致的函数签名不匹配,以及在基类中添加或修改虚函数时忘记更新派生类中的函数等。

zwh1298454060的博客 752

Reality Capture控制点修复/合并模型

通过增加控制点/修改对齐设置参数来修复模型被分为两个部分的解决方法

草履虫建模的博客 5243

海康VisionMaster图形定位实战:十字形Mark点精准匹配技巧

本文深入解析了海康VisionMaster图形定位模块在工业自动化中实现十字形Mark点精准匹配的实战技巧。文章从ROI设置、核心参数调优(如定位方式、尺度模式、对比度阈值)到工业场景应用与避坑指南,系统性地分享了提升匹配成功率和稳定性的关键步骤,帮助工程师应对复杂现场环境,实现高效、可靠的视觉定位。

weixin_29285605的博客 260

C++中override关键字

本文转自:https://blog.youkuaiyun.com/xiaoheibaqi/article/details/51272009 override关键字作用: 如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译。 举例子说明 struct Base { virtual void Turing() = 0; ...

qq_16334327的博客 895

Proxmox VE网络配置踩坑实录:从Web界面无法访问到完美修复的全过程

本文详细记录了Proxmox VE服务器Web界面无法访问的完整排查与修复过程。作者从基础网络连通性测试入手,逐步排查了服务状态、SSL证书、端口监听、防火墙规则及网关配置,最终定位并解决了问题。文章提供了系统性的故障排查思路和实用的修复命令,对管理Proxmox VE网络具有重要参考价值。

weixin_29231221的博客 890

C++ override 关键字用法

override关键字作用: 如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译。 举例子说明struct Base { virtual void Turing() = 0; virtual void Dijkstra() = 0; virtual void VNeumann(int g) = 0;

小黑霸气 的专栏 11万+

51智能小车(双轮)

前几天接了个小单子,是一个基于51单品机的作品,发现自己对小车的认识还是不太🆗。也算是完成了任了的;欢迎各位小伙伴来多多交流,大家一起进步。最后有需要单片机课程设计的小伙伴滴滴我哦(有偿)。企鹅:2397746994。

qq_56992543的博客 2348

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C++ ——一文读懂:关键字override

override在C++中它是覆盖了一个方法并且对其重写,从而达到不同的作用。在我们C++编程过程中,最熟悉的就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。还有一个典型应用就是在继承中也可能会在子类覆盖父类的方法。 1.公有继承包含两部分:一是“接口”(interface),二是 “实现” (implementation)。 class Sh...

xiaohu的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C++ final和override关键字

防止继承 C++11提供了一种防止继承发生的方法:在类名后面跟一个关键字final。 class NoDerived final { /* */ }; //编译错误:无法将final类类型作为基类 class Derived :public NoDerived{ /* */ };

一位菜鸡的博客 432

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++ override关键字的避坑妙用

使用override来避坑

爱就是是恒久忍耐的专栏 3253

C++ 中的 override 关键字详解

C++ 中的 override 关键字详解

深耕嵌入式领用多年, 致力于分享嵌入式领域技术! 1511

C++中override关键字的使用

override关键字作用: 如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译。 举例子说明 struct Base { virtual void Turing() = 0; virtual void Dijkstra() = 0; virtual void VNeumann(int g) = 0;...

luoshao_的博客 5966

c++11之override关键字

派生类如果定义了一个函数与基类中虚函数的名字相同但是形参列表不同,仍然是合法的行为。编译器将认为新定义的这个函数与基类中原有的所有函数都是相互独立的。这时,派生类的 函数没有覆盖掉基类中的版本。就实际编程习惯而言,这种声明往往意味着发生了错误,因为我们可能原本希望派生类生覆盖掉基类中的虚函数,但是一不小心把形参列表弄错了。 要想调试并发现这样的错误非常困难。因此c++11指出可以用overrid...

ypshowm的博客 3050

C++ override关键字

C++ override关键字 override针对基类中虚函数,子类希望对该虚函数进行重写时加上该关键字,可以避免写时失误而重定义新函数或者参数重载; override不能写在子类非虚函数后面,也不能写在基类中没有的虚函数后面; 图片来自C++ primer ...

weixin_43896259的博客 514

C++关键字之override

override是C++11中的一个继承控制保留字,放在派生类成员函数参数列表后面,用来修饰函数。派生类中被override修饰的函数,在父类中有一个与之对应(形参、函数名、返回值都一致)的虚函数,override表示要重写父类的虚函数,一旦函数后面加了override,编译器就会检查父类中是否有和子类中签名匹配的函数,如果没有编译器会报错。 示例代码: #include "stdafx.h"

Allen Roson 9807
上一篇: 【C++】左值及左值引用、非常量引用、引用作为返回值
下一篇: 邻接矩阵和邻接表
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白还在写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值