C++11:override 与 final[1]

override

  • 多态行为的基础:基类声明虚函数,继承类声明一个函数覆盖该虚函数
  • 覆盖要求: 函数签名(signature)完全一致
  • 函数签名包括:函数名 参数列表 const

下列程序就仅仅因为疏忽漏写了const,导致多态行为没有如期进行:

源代码:

#include 

程序运行结果:

显式函数覆盖

  • C++11 引入显式函数覆盖,在编译期而非运行期捕获此类错误。
  • 在虚函数显式重载中运用,编译器会检查基类是否存在一虚拟函数,与派生类中带有声明override的虚拟函数,有相同的函数签名(signature);若不存在,则会回报错误。

 修改上例,发现添加override,会在编译阶段报错,方便查找错误地方。

在编译阶段发现错误后,对程序进行修改:

#include 

程序运行结果:

final

  • C++11提供的final,用来避免类被继承,或是基类的函数被改写
  • 例:
struct 

注意:在Visual Stuidio和C++11标准中,可以将override与final用作变量名和函数名,它们不是语言本身的关键字,但不建议这样使用。

参考

  1. ^http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043_2x_2015_T2+sp/courseware/93f0d3a029d84059a84d02745a1e2bfd/5bf2454cc05d46f0b3314c65c6db5f89/

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

  1. android studio override报错,android studio中的@Override

    原文链接 @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则 ...

  2. LINUX 0.11内核完全剖析学习笔记-第三章内核编程语言和环境

    一.编译器 linux 0.11 集成了两种汇编器.一种是能产生16位代码的as86汇编器,使用配套的ld86链接器:另一种是GUN汇编器gas,使用GNU ld链接器俩链接产生的目标文件. 1.1 ...

  3. Java @override报错的解决方法 .

    有时候Java的Eclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多. 这是jdk的问题,@ ...

  4. Java @override报错的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 有时候Java的Eclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解 ...

  5. IDEA中实现接口时注解@Override报错的解决方法

    IDEA中实现接口时注解@Override报错的解决方法 参考文章: (1)IDEA中实现接口时注解@Override报错的解决方法 (2)https://www.cnblogs.com/liulao ...

  6. android override报错,android @override 报错解决方案

    android @override 报错解决方案 现象: ... java: 1801: method does not override a method from its superclass @ ...

  7. java override报错_java @override 报错处理

    转载自:http://blog.sina.com.cn/s/blog_9c7605530101kl9r.html 一.java @override 报错处理 做项目的时候,同事那边电脑上编译通过的ja ...

  8. IDEA中@override注解报错信息“Method does not override method from its superclass“

    IDEA中@override注解报错信息"Method does not override method from its superclass" 出现问题原因: 1. 首先查看这 ...

  9. Android 11 微信友盟分享报错 分享异常 Android 11及以上系统的手机需要使用FileProvider方式分享

    微信分享朋友圈报错 分享异常 Android 11及以上系统的手机需要使用FileProvider方式分享 项目集成了友盟的分享,在Android 11系统手机上,微信分享朋友圈失败: 集成时以按文档 ...

最新文章

  1. 【连载】优秀程序员的 45 个习惯之习惯35
  2. 带你理解Spring AOP
  3. SQL server常用查询
  4. drupal 7在一个form新增或者修改一个字段
  5. Revit2018找不到外部工具
  6. hibernate缓存问题
  7. OrCAD Capture CIS 16.6 修改原理图的页面大小
  8. 火狐linux ubuntu16.04,在Ubuntu16.04系统上更新FireFox浏览器(即火狐浏览器)到最新版本...
  9. Linux电源管理-wakeup events framework
  10. 电脑蓝屏问题处理,主要是引导修复
  11. Ubuntu Server 20.04.4 在树莓派上的体验之连接网络和WIFI(WLAN0)
  12. mysql数据库题库和答案2016_哪位大侠可以提供一些mysql数据库的题库,一定要带答案的!将感激不尽!!...
  13. 疫情下的大数据力量:多地政府借力大数据技术,多家企业上马大数据产品
  14. 大数据处理系统,分布式存储系统和分布式计算框架介绍
  15. MapperReducer
  16. 想打游戏/追剧,又放心不下学习,该怎么办?
  17. 盘点一下CSGO职业选手-光辉背后的悲情故事
  18. NLP是什么,百度的NLP技术有有哪些?
  19. util.promisify
  20. 135节---------4月11日

热门文章

  1. FFMPEG结构体分析之AVPacket
  2. http error
  3. 云主机实现外网转发访问内网的 Redis 和 MongDB 数据库
  4. java小编程--二分查找和插入排序
  5. leetcode 417. Pacific Atlantic Water Flow | 417. 太平洋大西洋水流问题(DFS,经典“感染”思路)
  6. Java程序员需要掌握的计算机底层知识(二):操作系统、内核、用户态与内核态、系统调用的执行过程
  7. vb鼠标涂鸦板的制作
  8. JIT的Profile神器JITWatch
  9. Libra教程之:运行自定义move modules
  10. Microsoft SQL Azure论文笔记