[C++11]final关键字的使用
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关键字的使用相关推荐
- Java学习总结:11(final关键字)
final关键字 在Java中final称为终结器,在Java中可以使用final定义类.方法和属性. 一.使用final定义的类不能再有子类,即:任何类都不能继承以final声明的父类. 在设计类的 ...
- C++11之final关键字
一.禁用继承 C++11中允许将类标记为final,方法时直接在类名称后面使用关键字final,如此,意味着继承该类会导致编译错误. 实例如下: class Super final {//...... ...
- 11.浅析Java中的final关键字
Java中,在匿名内部类的时候可能会经常用到final关键字.Java中的string类就是一个final类.final关键字可以用来修饰类,方法和变量(包括成员变量和局部变量) 1.修饰类 当用fi ...
- 【C++】C++11新增关键字详解
目录 一.auto 1.auto 用来声明自动变量,表明变量存储在栈(C++11之前) 2.auto用于推断变量类型示例(C++11) 3.声明或定义函数时作为函数返回值的占位符,此时需要与关键字 d ...
- 《从零开始学Swift》学习笔记(Day 47)——final关键字
在类的定义中使用final关键字声明类.属性.方法和下标.final声明的类不能被继承,final声明的属性.方法和下标不能被重写. 下面看一个示例: 1 2 3 4 5 6 7 8 9 10 11 ...
- 浅谈Java中的final关键字
浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...
- 浅析Java中的final关键字
浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...
- 深入理解Java中的final关键字
深入理解Java中的final关键字 http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什 ...
- Java基础super关键字、final关键字、static关键字、匿名对象整理
super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...
最新文章
- php和python对比-通过PHP与Python代码对比浅析语法差异
- 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
- 冒险岛sf发布网广告_魔域sf游戏怎么选择合适又放心的服务器?
- 为什么0.1无法被二进制小数精确表示?
- ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—(1)读者序】★★★...
- LVS_DR实现过程...
- 线上 ELK 集群健康值 red 状态问题排查与解决
- 询问区间内最大值-最小值
- Java项目转换成Web项目
- 【汽车冷却胶管】的试验研究检测及质量改进方法
- 阿里云服务器被恶意程序攻击
- 使用Graphics2D给报警图片画框和提示信息
- Silvaco TCAD LTPS双栅器件仿真收敛不了,有没有好的解决办法
- idear——文件的刷新,清理和打包
- Windows上CLion配置和使用教程
- USCD行人异常数据集使用指南 | 快速下载
- android 6.0蓝牙服务开启,Android应用开发之Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法...
- Python进度条库tqdm详解
- 西南大学考研电子信息907初试经验
- 宽泛的计算机求职意向,求职意向怎么写
热门文章
- [转]常见的用户密码加密方式以及破解方法
- [转]阿里编程规范(精简版)
- [转]浅析Tomcat、JBOSS、WebSphere、WebLogic、Apache
- LeetCode之Remove Duplicates from Sorted Array II
- linux之vim常见配置
- linux之lsusb命令和cd -命令使用总结
- Android之Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE问题解决
- 作为一个程序员,进步完全取决于自己
- 【前端就业课 第一阶段】HTML5 零基础到实战(十)JavaScript基础一篇入门
- go 服务器 源码,LollipopGo开源游戏服务器框架--global服务器源码