C++中增加了final关键字来限制某个类不能被继承,或者或个虚函数不能被重写,和java的final关键字的功能是类似的。如果使用final修饰函数,只能修饰虚函数,并且要把final关键字放到类或者函数的后面。

1.如果使用final修饰函数,只能修饰虚函数,这样就能阻止子类重写父类的这个函数了。

代码如下:

#include <iostream>
using namespace std;class Base
{public:virtual void test(){cout << "Base class..." << endl;}
};class Child :public Base
{public:void test() final{cout << "Child class..." << endl;}
};class GrandChild :public Child
{public:void test()/*error 因为Child的test()被final修饰,所以它的子类已经不能重写这个函数了。*/{cout << "GrandChild class..." << endl;}
};

2.使用final关键字修饰过的类是不允许被继承的,也就是说这个类不能有派生类。

代码如下:

#include <iostream>
using namespace std;class Base
{public:virtual void test(){cout << "Base class..." << endl;}
};class Child final:public Base
{public:void test() {cout << "Child class..." << endl;}
};class GrandChild :public Child//error 不能将final类型的类作基类
{public:void test(){cout << "GrandChild class..." << endl;}
};

[C++11]final关键字的使用相关推荐

  1. Java学习总结:11(final关键字)

    final关键字 在Java中final称为终结器,在Java中可以使用final定义类.方法和属性. 一.使用final定义的类不能再有子类,即:任何类都不能继承以final声明的父类. 在设计类的 ...

  2. C++11之final关键字

    一.禁用继承 C++11中允许将类标记为final,方法时直接在类名称后面使用关键字final,如此,意味着继承该类会导致编译错误. 实例如下: class Super final {//...... ...

  3. 11.浅析Java中的final关键字

    Java中,在匿名内部类的时候可能会经常用到final关键字.Java中的string类就是一个final类.final关键字可以用来修饰类,方法和变量(包括成员变量和局部变量) 1.修饰类 当用fi ...

  4. 【C++】C++11新增关键字详解

    目录 一.auto 1.auto 用来声明自动变量,表明变量存储在栈(C++11之前) 2.auto用于推断变量类型示例(C++11) 3.声明或定义函数时作为函数返回值的占位符,此时需要与关键字 d ...

  5. 《从零开始学Swift》学习笔记(Day 47)——final关键字

    在类的定义中使用final关键字声明类.属性.方法和下标.final声明的类不能被继承,final声明的属性.方法和下标不能被重写. 下面看一个示例: 1 2 3 4 5 6 7 8 9 10 11 ...

  6. 浅谈Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  7. 浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  8. 深入理解Java中的final关键字

    深入理解Java中的final关键字 http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什 ...

  9. Java基础super关键字、final关键字、static关键字、匿名对象整理

    super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...

最新文章

  1. php和python对比-通过PHP与Python代码对比浅析语法差异
  2. 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
  3. 冒险岛sf发布网广告_魔域sf游戏怎么选择合适又放心的服务器?
  4. 为什么0.1无法被二进制小数精确表示?
  5. ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—(1)读者序】★★★...
  6. LVS_DR实现过程...
  7. 线上 ELK 集群健康值 red 状态问题排查与解决
  8. 询问区间内最大值-最小值
  9. Java项目转换成Web项目
  10. 【汽车冷却胶管】的试验研究检测及质量改进方法
  11. 阿里云服务器被恶意程序攻击
  12. 使用Graphics2D给报警图片画框和提示信息
  13. Silvaco TCAD LTPS双栅器件仿真收敛不了,有没有好的解决办法
  14. idear——文件的刷新,清理和打包
  15. Windows上CLion配置和使用教程
  16. USCD行人异常数据集使用指南 | 快速下载
  17. android 6.0蓝牙服务开启,Android应用开发之Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法...
  18. Python进度条库tqdm详解
  19. 西南大学考研电子信息907初试经验
  20. 宽泛的计算机求职意向,求职意向怎么写

热门文章

  1. [转]常见的用户密码加密方式以及破解方法
  2. [转]阿里编程规范(精简版)
  3. [转]浅析Tomcat、JBOSS、WebSphere、WebLogic、Apache
  4. LeetCode之Remove Duplicates from Sorted Array II
  5. linux之vim常见配置
  6. linux之lsusb命令和cd -命令使用总结
  7. Android之Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE问题解决
  8. 作为一个程序员,进步完全取决于自己
  9. 【前端就业课 第一阶段】HTML5 零基础到实战(十)JavaScript基础一篇入门
  10. go 服务器 源码,LollipopGo开源游戏服务器框架--global服务器源码