Cpp 11 / override 和 final 区别
一、override
1、诞生原因
C++ 中,有时继承关系较复杂时,基类和派生类各自的虚函数较多,导致开发人员傻傻地分不清哪些是重写了基类的虚函数,哪些是本派生类特有的虚函数。为了解决上述问题,添加了 virtual 描述符 override。
2、作用
该标识符表示开发人员与编译器产生约定:该标识符描述的函数必须是基类的虚函数,即:同名又同参,否则编译器无法通过。有了该关键字,派生类就可以分清哪些虚函数是重写了基类的虚函数,哪些虚函数是自己新建立的。
3、注意
该标识符不是关键字。
二、final
1、诞生原因
在 C++ 中,有时有如下需求:
当前的类不要被其他开发人员继承;
基类的虚函数在本类重写完之后止,不想被子类再重写。
2、作用
为了达到上述目的,C++ 11引入标识符 final,其作用如下:
放在类定义的后面,表示当前类不能被继承;
放在虚函数的后面,表示子类不能重写该虚函数。
3、注意
该标识符不是关键字。
(SAW:Game Over!)
Cpp 11 / override 和 final 区别相关推荐
- @override报错_C++ 多态性:C++11:override 与 final(学习笔记:第8章 09)
C++11:override 与 final[1] override 多态行为的基础:基类声明虚函数,继承类声明一个函数覆盖该虚函数 覆盖要求: 函数签名(signature)完全一致 函数签名包括: ...
- c++ 11 override final
C++ 11添加了两个继承控制关键字:override和final. override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名.final阻止类的进一步派生和虚函数的进一步重载 出处:h ...
- C++11新特性探究:显式override和final
C++中,我们一般可以以基类声明纯虚函数,然后让派生类继承并重写这个虚函数,用override表示显示覆盖基类方法,但一直没有提供一种方法来阻止派生类继承基类的虚函数. C++11标准引入了fina ...
- override和final标识符
override和final标识符 override和final是C++引入的新的标识符.注意是标识符不是关键字. 标识符和关键字的区别 关键字(KEYWORD):也称保留字.它们为语言所用,不可用于 ...
- 公有/私有/保护继承、overload/overwrite/override之间的区别
一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...
- 《.NET程序员面试秘笈》----面试题8 方法的重载和override有什么区别
本节书摘来自异步社区<.NET程序员面试秘笈>一书中的第1章,面试题8,作者: 张云翯, 更多章节内容可以访问云栖社区"异步社区"公众号查看. 面试题8 方法的重载和o ...
- 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别...
一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...
- C++中overload,override,overwrite的区别?
C++中overload,override,overwrite的区别? Overload(重载) Override(覆盖) Overwrite(重写) Overload(重载) 在C++程序中,可以将 ...
- override与final
C++11新特性: 在派生类中,重写(override)继承自基类成员函数的实现时,要满足如下条件: 基类中,成员函数声明为虚拟的(virtual) 基类和派生类中,成员函数的返回类型和异常规格必须兼 ...
最新文章
- pandas使用pad函数向dataframe特定数据列的每个字符串添加前置(前缀)补齐字符或者字符串、向所有字符串的左侧填充、直到宽度达到指定要求(left padding)
- 全球三大芯片架构之一MIPS倒下!转身投入RISC-V阵营
- (转)Linux(Centos)之安装Java JDK及注意事项
- java list用法 包,java list用法示例详解
- 【项目管理】ITTO-进度管理
- JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
- aspen吸收塔气液比优化_Aspen吸收塔的设计
- VM虚拟机打开其中一个vmx文件没反应问题解决
- 查询相关股票十档行情的方法
- c语言用指针取出字节,在C语言中一个指针占用多少字节。
- Dijkstra最短路径
- TextInput组件练习 - QQLogin界面
- Keil中如何生成bin文件
- 解决注册表被禁用的问题
- 关于ps抠图问题,制作公章,公章的复制
- 德国AI“算个球”:西班牙是冠军,只要别让德国进八强(严谨推理)
- win10升级助手_现在知道还不晚,玩转Win10系统小技巧大合集
- C语言引用方式调用函数
- Uber Go 语言编程规范:使用 go.uber.org/atomic
- 好用不贵的职场礼物——讯飞智能录音笔SR302
热门文章
- jQuery图片提示和文字提示
- spring事务管理一:关于事务管理的接口
- 大容量磁盘分区表、文件系统、分区工具的选择
- 慢慢学Linux驱动开发,第四篇,USB工作原理简单分析
- Geomesa-Hbase单机部署及ingest、export shp文件数据
- spark mapreduce术语梳理
- 【收藏】在 Linux 上以 All-in-One 模式安装 KubeSphere
- Python报错:IndentationError: unindent does not match any outer indentation level解决办法
- Jenkins配置jdk(启动报错:Starting Jenkins bash: /usr/bin/java: No such file or directory)
- Cloud Studio全文搜索功能介绍