一、override

1、诞生原因

C++ 中,有时继承关系较复杂时,基类和派生类各自的虚函数较多,导致开发人员傻傻地分不清哪些是重写了基类的虚函数,哪些是本派生类特有的虚函数。为了解决上述问题,添加了 virtual 描述符 override。

2、作用

该标识符表示开发人员与编译器产生约定:该标识符描述的函数必须是基类的虚函数,即:同名又同参,否则编译器无法通过。有了该关键字,派生类就可以分清哪些虚函数是重写了基类的虚函数,哪些虚函数是自己新建立的。

3、注意

该标识符不是关键字。

二、final

1、诞生原因

在 C++ 中,有时有如下需求:

  • 当前的类不要被其他开发人员继承;

  • 基类的虚函数在本类重写完之后止,不想被子类再重写。

2、作用

为了达到上述目的,C++ 11引入标识符 final,其作用如下:

  • 放在类定义的后面,表示当前类不能被继承;

  • 放在虚函数的后面,表示子类不能重写该虚函数。

3、注意

该标识符不是关键字。

(SAW:Game Over!)

Cpp 11 / override 和 final 区别相关推荐

  1. @override报错_C++ 多态性:C++11:override 与 final(学习笔记:第8章 09)

    C++11:override 与 final[1] override 多态行为的基础:基类声明虚函数,继承类声明一个函数覆盖该虚函数 覆盖要求: 函数签名(signature)完全一致 函数签名包括: ...

  2. c++ 11 override final

    C++ 11添加了两个继承控制关键字:override和final. override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名.final阻止类的进一步派生和虚函数的进一步重载 出处:h ...

  3. C++11新特性探究:显式override和final

    C++中,我们一般可以以基类声明纯虚函数,然后让派生类继承并重写这个虚函数,用​override表示显示覆盖基类方法,但一直没有提供一种方法来阻止派生类继承基类的虚函数. C++11标准引入了fina ...

  4. override和final标识符

    override和final标识符 override和final是C++引入的新的标识符.注意是标识符不是关键字. 标识符和关键字的区别 关键字(KEYWORD):也称保留字.它们为语言所用,不可用于 ...

  5. 公有/私有/保护继承、overload/overwrite/override之间的区别

    一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...

  6. 《.NET程序员面试秘笈》----面试题8 方法的重载和override有什么区别

    本节书摘来自异步社区<.NET程序员面试秘笈>一书中的第1章,面试题8,作者: 张云翯, 更多章节内容可以访问云栖社区"异步社区"公众号查看. 面试题8 方法的重载和o ...

  7. 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别...

    一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...

  8. C++中overload,override,overwrite的区别?

    C++中overload,override,overwrite的区别? Overload(重载) Override(覆盖) Overwrite(重写) Overload(重载) 在C++程序中,可以将 ...

  9. override与final

    C++11新特性: 在派生类中,重写(override)继承自基类成员函数的实现时,要满足如下条件: 基类中,成员函数声明为虚拟的(virtual) 基类和派生类中,成员函数的返回类型和异常规格必须兼 ...

最新文章

  1. pandas使用pad函数向dataframe特定数据列的每个字符串添加前置(前缀)补齐字符或者字符串、向所有字符串的左侧填充、直到宽度达到指定要求(left padding)
  2. 全球三大芯片架构之一MIPS倒下!转身投入RISC-V阵营
  3. (转)Linux(Centos)之安装Java JDK及注意事项
  4. java list用法 包,java list用法示例详解
  5. 【项目管理】ITTO-进度管理
  6. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
  7. aspen吸收塔气液比优化_Aspen吸收塔的设计
  8. VM虚拟机打开其中一个vmx文件没反应问题解决
  9. 查询相关股票十档行情的方法
  10. c语言用指针取出字节,在C语言中一个指针占用多少字节。
  11. Dijkstra最短路径
  12. TextInput组件练习 - QQLogin界面
  13. Keil中如何生成bin文件
  14. 解决注册表被禁用的问题
  15. 关于ps抠图问题,制作公章,公章的复制
  16. 德国AI“算个球”:西班牙是冠军,只要别让德国进八强(严谨推理)
  17. win10升级助手_现在知道还不晚,玩转Win10系统小技巧大合集
  18. C语言引用方式调用函数
  19. Uber Go 语言编程规范:使用 go.uber.org/atomic
  20. 好用不贵的职场礼物——讯飞智能录音笔SR302

热门文章

  1. jQuery图片提示和文字提示
  2. spring事务管理一:关于事务管理的接口
  3. 大容量磁盘分区表、文件系统、分区工具的选择
  4. 慢慢学Linux驱动开发,第四篇,USB工作原理简单分析
  5. Geomesa-Hbase单机部署及ingest、export shp文件数据
  6. spark mapreduce术语梳理
  7. 【收藏】在 Linux 上以 All-in-One 模式安装 KubeSphere
  8. Python报错:IndentationError: unindent does not match any outer indentation level解决办法
  9. Jenkins配置jdk(启动报错:Starting Jenkins bash: /usr/bin/java: No such file or directory)
  10. Cloud Studio全文搜索功能介绍