C++11 final 与 override 的用法

每日练习(c++11) 摘要:本文包含C++11相关知识点解析和二叉树层序遍历算法题。知识点部分涉及auto关键字、范围for循环、列表初始化、final/override修饰符、默认成员函数控制及lambda表达式。算法题部分给出二叉树的层序遍历实现代码,使用队列辅助实现,将每层节点值存入二维数组。各知识点解析清晰指出常见错误,算法实现简洁高效。 阅读详情

final

final 是 C++11 新标准的一个关键字!
只有支持C++11新标准的IDE才可以使用!


final 有什么作用?

  1. 用来修饰类,使该类不能被继承;
  2. 用来修饰类的虚函数,使得该虚函数在子类中,不能被重写。

理解:终结fianl所修饰过的任何东西。


一、用来修饰类,使该类不能被继承

代码:

#include <iostream>

class XiaoMi {
	
};

class XiaoMi_2 final : public XiaoMi {	// 使用final修饰XiaoMi_2,使其不能再派生出任何子类

};

class XiaoMi_3 : public XiaoMi_2 {		// 错误,不能使用XiaoMi_2作为基类
	
};

二、用来修饰类的虚函数,使得该虚函数在子类中,不能被重写

代码:

#include <iostream>

class XiaoMi {
	virtual void func() final;	// 使用final修饰虚函数,使其派生出的子类不能再重写,但是可以继承使用!
};

class XiaoMi_2 final : public XiaoMi {
	virtual void func();	// 错误,子类不能再重写func()
};

override

override仅能用于修饰虚函数。


override 有什么作用?

  1. 提示程序的阅读者,这个函数是重写父类的功能;
  2. 防止程序员在重写父类的函数时,把函数名写错。

代码:

#include <iostream>

class XiaoMi {
	virtual void func();
};

class XiaoMi_2 : public XiaoMi {
	virtual void func() override;	// 使用override修饰func()函数
									// 告诉程序员func()是重写父类的虚函数

	// 如果把虚函数名字写错:
	// virtual void func1() override; // 错误, 应为父类没有func1()这个虚函数
};


// 另外,override只需再声明中写,不需要在函数的实现中使用

void XiaoMi_2::func() override {	// 错误,无需再写override
	std::cout << "XiaoMi_2::func()" << std::endl;
} 
// override只需在函数声明中使用,不需要在函数的实现中使用

总结:

在写代码中,应养成写override的习惯,这样有助于防止写错!

Qt思岚激光雷达 Qt关于思岚激光雷达研究示例,本示例采用qt界面开发,可以串口也可以tcp进行设备连接。接收数据进行相关的数据进行绘图, 这种雷达可以用于大屏触摸场景,会场互动触摸场景开发。 #ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QTimer> #include <QWidget> #include "lidarmgr.h" namespace Ui { class MainWidget; } class MainWidget. 阅读详情

相关推荐

M2DGR数据集在主流SLAM框架中的实战配置指南:从ORB-SLAM到FAST-LIO的完整流程

本文提供了M2DGR多传感器数据集在主流SLAM框架中的实战配置指南。详细介绍了从ORB-SLAM、VINS-Mono等视觉/视觉惯性框架,到A-LOAM、FAST-LIO等激光/激光惯性框架的完整配置流程、参数调整要点及常见问题解决方案。通过实际测试对比,分析了各算法在M2DGR数据集上的表现,为机器人定位与建图研究提供了宝贵的实战经验。

k9l0m1的博客 481

使用 C++ 中的 final 关键字,到底能否提升性能?

使用C++ 中的 final关键字,到底能否提升性能?不少开发者认为可以,却没能给出数据依据。为此,本文作者进行了一次测试,亲自验证这个说法的真实性。原文链接:https://16bpp.net/blog/post/the-performance-impact-of-cpp-final-keyword/译者 | 郑丽媛出品 | 程序人生(ID:coder_life)如果你选择用 C++写代码...

程序人生的博客 258

SigmaStar(星宸科技)SSC33X系列

目前,SSC33X系列已经量产了接近两年,SDK成熟稳定,功耗表现良好,图像效果出色,广泛应用在AI枪机、AI球机、AI云台机、多目摄像机、停车场闸机、人脸门禁、人脸锁、门铃猫眼等产品上。

Comake Online的博客 1万+

C++11 之 override

C++11之 override

岩之有理的博客 1224

从勒索软件攻击到数据重生:SQL Server MDF文件修复的实战生存指南

本文详细介绍了SQL Server MDF文件在遭遇勒索软件攻击后的修复策略,重点解析了Recovery Toolbox工具链的应用流程。从灾难评估到数据验证,提供分阶段修复操作、高级修复技术及防御加固方案,帮助企业快速恢复数据库并提升安全防护能力。

weixin_28327051的博客 715

Code Composer Studio 8.3.1安装与常见问题解决指南

本文提供了Code Composer Studio 8.3.1版本的详细安装指南与常见问题解决方案。内容涵盖从下载离线安装包、系统环境准备、自定义安装步骤,到首次启动配置及汉化建议。重点解析了安装过程中可能遇到的闪退、卡顿、Java虚拟机错误等典型问题的排查与修复方法,旨在帮助开发者高效部署这一稳定的嵌入式集成开发环境。

weixin_29195217的博客 330

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

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

沐槿的博客 5万+

无线网卡选购指南:哪些型号支持Kali Linux的监听模式?附免驱动网卡推荐

本文详细解析了如何在Kali Linux下选购支持监听模式的无线网卡。核心在于选择兼容的芯片组,如Atheros AR9271和Ralink RT3070等经典型号,并提供了免驱动网卡推荐与实战配置指南,帮助安全研究人员和爱好者快速搭建无线测试环境。

wind6的博客 1555

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

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

nihao_2014的博客 1万+

电机驱动和电源等大电流设计中的并联 MOSFET设计

在电机驱动等应用中,半桥拓扑(通常为 3 相)用于生成在电机中产生正扭矩或负扭矩的交流电源信号。想要更高的输出电流能力,只有通过并联形成每个功能开关的 MOSFET,才能实现高输出电流。当多个功率 MOSFET 并联以增加系统整体电流能力容量时,通常假设电流在并联器件之间均等分配或均等共享。然而,在并联 MOSFET 时,需要考虑并联器件之间的电流分配。PCB 布局的若干特性和特定的MOSFET 参数会影响这种分配,并在参数不匹配或布局不对称时导致均流不平衡。

小幽余生不加糖 2487

Headless Browser 反检测:如何在自动化测试和爬虫中模拟真实用户环境和指纹,以规避检测?

这是最基本的操作,你需要将 Headless Browser 的 User-Agent 修改成一个真实的 User-Agent。我是你们的老朋友,代码界的段子手,今天咱们来聊聊一个让爬虫工程师和自动化测试工程师头疼,但又不得不面对的问题:Headless Browser 的反检测。Headless Browser 的反检测是一个持续对抗的过程,网站的反爬虫机制会不断升级,你需要不断地学习新的反检测技巧。以上只是一些基本的反检测手段,如果你的目标网站的反爬虫机制比较高级,那么你需要使用更高级的技巧。

weixin_41455464的博客 1657

c++中 override用法

描述:override保留字表示当前函数重写了基类的虚函数。 目的: 1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的); 2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。 用法:在类的成员函数参数列表后面添加该关键字既可。 例子: class Base { virtual void f(); }; class Deriv...

qq_43026520的博客 7277

基于simulink的BMS系统中电池单体故障隔离与恢复建模

本文介绍了使用Simulink构建BMS电池单体故障诊断与容错控制模型的方法。主要内容包括:1)搭建12串锂电池组模型;2)实现单体故障注入(过压、断线等);3)设计故障诊断与隔离模块(采用Stateflow状态机);4)开发恢复判断逻辑(需满足电压、温度等条件);5)系统监控与仿真设置。文章还提供了工程实践建议,如防环流设计、通信冗余等,并指出进阶方向(多故障处理、AI预警等)。该模型适用于新能源汽车、储能系统的BMS设计,可提高系统可靠性和安全性。

xiaoheshang_123的博客 140

C++11中final和override的用法

final标识符用来限制某个类不能被继承,或者某个虚函数不能被继承(非虚函数不能用final标识符修饰)。 override标识符可以让编译器帮忙确认派生类中声明的重写函数与基类的虚函数是否有相同的签名,同时也明确表明将会重写基类的虚函数,可以防止因疏忽把本来的想重写的基类的虚函数在派生类中声明为重载,还可以防止在派生类中重写的虚函数声明漏掉virtual关键字。   class A{ ...

jirryzhang的博客 2771

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++11 -- final与override关键字和类的新功能

默认生成的移动构造函数,对于内置类型成员会执行逐成员按字节拷贝,自定义类型成员,则需要看这个成员是否实现移动赋值,如果实现了就调用移动赋值,没有实现就调用拷贝赋值。默认生成的移动构造函数,对于内置类型成员会执行逐成员按字节拷贝,自定义类型成员,则需要看这个成员是否实现移动构造,如果实现了就调用移动构造,没有实现就调用拷贝构造。如果你没有自己实现移动赋值重载函数,且没有实现析构函数 、拷贝构造、拷贝赋值重载中的任意一个,那么编译器会自动生成一个默认移动赋值。默认成员函数就是我们不写编译器会生成一个默认的。

m0_66409987的博客 153

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C++11 学习笔记-03.final and override

final 说明符 (C++11 起) 指定某个虚函数不能在子类中被覆盖,或者某个类不能被子类继承。 struct Base { virtual void foo(); }; struct A : Base { void foo() final; // Base::foo 被覆盖而 A::foo 是最终覆盖函数 void bar() final; // 错误: bar 不能为 final 因为它非虚 }; struct B final : A // struct B 为 fi

小鱼酱的博客 423

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C++11 override and final

override final

chomo的专栏 509

final/override/=default/=delete 语法

final、override、=default、=delete 是 C++11 添加的一组非常具有标记意义的新语法,我们来逐一介绍它们。 FINAL 关键字 final 关键字修饰一个类,这个类将不允许被继承,这在其他语言(如 Java)中早就实现了。在 C++ 11 中 final 关键字要写在类名的后面,其他语言是写在 class 关键字的前面。示例如下: class A final { ...

weixin_42226134的博客 2406

C++11 新特性:显式 override 和 final

转自:https://www.devbean.net/2012/05/cpp11-override-final/ 2012 年 3 月 22 日,GCC 4.7.0 正式发布。从这个版本开始,GCC 增加了许多新的 C++ 11 的特性。今天我们要介绍的是其中的一个特性:显式的使用 final和override关键字。先来看下面的例子: struct B1 final { };

博客标题不能为空 381

[c++11]final和override

Derived 类中的 foo 函数使用 override 关键字,表明它覆盖了 Base 类中的虚函数 foo。如果 Derived 类中的 foo 函数的签名与 Base 类中的 foo 函数不匹配,或者 Base 类中的 foo 函数并非虚函数,编译器会产生错误。Base类中的虚函数foo使用了final修饰,表示该函数不能被其派生类重写。它通常与虚函数一起使用,以确保派生类中的函数正确地覆盖了基类中的虚函数。final是一种修饰符,它可以用于类的成员函数和类本身。

qq_45031489的博客 239

c++11面试宝典(final,delete,deault,explicit,lambda表达式)(2)

很多小伙伴为了刷题发愁各大互联网大厂面试真题。从基础到入阶乃至原理刨析类面试题 应有尽有,赶快来装备自己吧!助你面试稳操胜券,solo全场面试官。

2401_84166147的博客 699

C++11 语法记录

一、Lambda表达式 C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下:               [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体}       可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或ex

小邓笔记 7228

五、语言特性之<=default,=delete、using、noexcept、override、final、以及和const对比>

一、=default,=delete 1、首先我们要回顾一下类默认函数的概念: C++中,当我们设计与编写一个类时,若不显著申明,则类会默认为我们提供如下几个函数: (1)构造函数(A())、(2)析构函数(~A())、(3)拷贝构造函数(A(A&))、(4)拷贝赋值函数(A& operator=(A&))、(5)移动构造函数(A(A&&))、(6)移动赋值函数(A& operator=(A&&)) 注意:拷贝函数如果涉及指针就要区分浅拷

梦心之魂的博客 1089

【C++】多态(多态的构成条件,虚函数重写,override,final,覆盖隐藏对比)

多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。举个栗子:多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。

m0_74774759的博客 414

C++11新特性之final

final是C++11引入的特性,用于限制类或虚函数的进一步继承或重写,旨在增强代码的安全性和可维护性。(3)优化性能:标记为final的类或虚函数可以帮助编译器进行优化,因为编译器知道它们不会被进一步拓展或重写了。final与override一起使用,以明确表明函数是重写的,但禁止进一步的重写。一个类设计完整,不需要被继承,可以用final。合理使用final,可以更好地控制类的继承层次和虚函数的行为,使代码更加健壮和易于维护。它可以增强代码的安全性和可维护性,防止意外的继承或重写。

qq_55527904的博客 483

C++11中sizeof运算符,friend,final,override,模板函数的默认模板参数

1、sizeof运算符 C++11sizeof运算符,我们知道在C++98中sizeof是不能直接计算结构体中的非静态成员变量的字节的 但是在C++11中这一点做出了改变,sizeof运算符可以直接计算结构体和类中的非静态成员变量的字节 struct People { int age; }; int main(void) { struct People p; cout << "p.

yp18792574062的博客 1069
上一篇: C++ 输入 和 输出 运算符重载
下一篇: C++ 遗失的子类析构函数
cpp_learners
博客等级 码龄7年 1526粉丝 274原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

cpp_learners

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

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

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

打赏作者

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

抵扣说明:

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

余额充值