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

C++11标准引入了final说明符,很好的解决了上面的问题。final告诉编译器,该虚函数不能被派生类重写。

废话不多说,上代码,试着指出来下面的代码有哪些问题?

class Base
{
public:virtual void plant(int x) {}
};class Derived : public Base
{
public:void plant(int x) final {}
};class SunDerived final : public Derived
{
public:void plant(int x) {}
};class GrandSunDev : public SunDerived
{
};

​上述代码中,基类Derived的虚函数 plant 声明为final,那么,派生类SunDerived重写 plant 函数的时候,编译器会报错。​

final说明符不止可以声明虚函数,还可以声明类,如果在类定义的时候,声明了final,那么,这个类将不能作为基类被其他类继承,SunDerived被声明为final,那么GrandSunDev再继承SunDerived的时候,编译器会报错。​

注意:C++11标准中,无论是override还是final,都没有背作为保留的关键字,override只有在虚函数尾部才有意义,final只有在虚函数尾部以及类声明的时候,才有意义。

C++11新特性探究:显式override和final相关推荐

  1. C++新特性探究(二):override、final

      "改写"(override)和"重载"(overload)读起来很像,尽管这是两个毫不相干的概念. --<Effective Modern C++&g ...

  2. C++11 新特性简介

    1.auto auto是旧关键字,在C++11之前,auto用来声明自动变量,表明变量存储在栈,很少使用.在C++11中被赋予了新的含义和作用,用于类型推断. auto关键字主要有两种用途:一是在变量 ...

  3. 《深入理解C++11:C++ 11新特性解析与应用》——导读

    前 言 为什么要写这本书 相比其他语言的频繁更新,C++语言标准已经有十多年没有真正更新过了.而上一次标准制定,正是面向对象概念开始盛行的时候.较之基于过程的编程语言,基于面向对象.泛型编程等概念的C ...

  4. C++11新特性的总结

    C++11新特性 auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11) C++动态内存管理 序列式容器 array forward_list; 继承和 ...

  5. C++11新特性选讲 语言部分 侯捷

    C++11新特性选讲 语言部分 侯捷 本课程分为两个部分:语言的部分和标准库的部分.只谈新特性,并且是选讲. 本文为语言部分笔记. 语言 Variadic Templates move semanti ...

  6. C++11新特性(原封不动转载待查)

    C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百 ...

  7. 【C++】C++11新特性列表

    我们学习的标准是C++98,我们知道计算机的知识更新非常快,本文旨在大致了解C++11的新特性,如果想要仔细了解,请阅读<C++Primer中文版 第五版>本文的页码也是这本书的页码,这里 ...

  8. java9特性_96.java基础10(java9/10/11新特性)

    126.java 9 新特性1(模块化功能): 1.java模块化 2.java 交互式环境jshell 3.泛型 package com.atguigu.java; import org.junit ...

  9. Java 8新特性探究(二)深入解析默认方法

    转载自 Java 8新特性探究(二)深入解析默认方法 什么是默认方法,为什么要有默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法.只需在方法名前面加个default关键字即可. ...

最新文章

  1. DirectX下 Viewing Frustum 的详细实现
  2. 数据结构---KMP模式匹配病毒感染人的DNA检测
  3. c语言每轮for循环初始化i,十三.Linux博客-2016年8月18日while、for特殊用法、selet循环与菜单、函数...
  4. exls导入数据库 php_PHP读取excel文件并导入数据库
  5. uboot kernel 博客
  6. python3 字典有序_Python3 有序字典—OrderedDict()
  7. 文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
  8. PHP学习笔记--array_map函数
  9. dnf强化卷代码_dnf强化卷叫什么名字?
  10. 第0期-前言-学习软件测试是否需要培训
  11. 少有人走的路,心智成熟的旅程
  12. 结果页要求用户复制链接进行分享 而不是直接调用浏览器分享API的原因
  13. 人工智能第一讲:发展历史图解
  14. 常用限流方案的设计和实现
  15. DeepLearning: 归纳几种常用的激活函数(activation)
  16. 反向放大器的缺点-运算放大器-运放
  17. 为什么越来越多的人转行学IT当程序员?
  18. laysns模板系统仿善恶模版 完美自适应
  19. Linux编译gcc 11和binutils
  20. Linux下sqlserver SA密码忘记了破解方法

热门文章

  1. 计算机模拟蛋白,酶的计算机模拟和蛋白质组分析
  2. python浅复制与深复制_Python中的浅复制与深复制
  3. 两个链表求交集_实现两个排序链表的并集和交集
  4. 如何打印出给定尺寸的方格_打印给定号码的表格| 8085微处理器
  5. python程序需要编译么_python需要编译么
  6. enter sleep mode黑屏怎么解决_【linux】 不要再暴力关机了,讲讲我最近遇到的问题和完美解决方案...
  7. Oracle 练习P297 131026 PL/SQL块程序
  8. jenkins用ssh agent插件在pipeline里实现scp和远程执行命令
  9. TCP/ITX协议面试总结
  10. 华中科技大学c语言期末考试题,华中科技大学C语言期末考库剖析.docx