C++ 语言禁止派生类 - final specifier

1. 禁止派生类

可以将类指定为 final,确保不能将类用作基类。

禁止派生 CBox 类:

class CBox final
{// Class details ...
};

定义中类名后面的 final 修饰符告诉编译器不允许从 CBox 类中派生。final 不是关键字,只在这个上下文中有特殊的含义。不能把关键字用作名称,但可以把 final 用作变量名。

2. 防止发生继承

C++11 新标准提供了一种防止继承发生的方法,在类名后跟一个修饰符 final

class NoDerived final { /* */ };       // NoDerived 不能作为基类 class Base { /* */ };
class Last final : Base { /* */ };     // Last 不能作为基类,不能继承 Lastclass Bad1 : NoDerived { /* */ };      // 错误∶NoDerived 是 final 的
class Bad2 : Last { /**/ };            // 错误∶Last 是 final 的
Standard Template Library,STL:标准模板库

References

Ivor Horton’s Beginning Visual C++ 2013
(美) Ivor Horton 著, 李周芳, 江凌 译. Visual C++ 2013 入门经典[M]. 第 7 版. 清华大学出版社, 2015.
http://www.wrox.com/WileyCDA/WroxTitle/productCd-1118845714.html

C++ Primer
(美) Stanley B. Lippman, (美) Josée Lajoie, (美) Barbara E. Moo 著, 王刚, 杨巨峰 译. C++ Primer 中文版[M]. 第 5 版. 电子工业出版社, 2013.
https://www.informit.com/store/c-plus-plus-primer-9780321714114

cppreference.com - C++ reference
https://en.cppreference.com/w/cpp/language/final

C++ 语言禁止派生类 - final specifier相关推荐

  1. 4.3调整基类成员在派生类中的访问属性的方法

    同名成员 在定义派生类的时候,C++语言允许派生类与基类中的函数名相同.如果在派生类中定义了与基类中相同的成员,则称派生类成员覆盖了基类的同名成员,在派生类中使用这个名字意味着访问在派生类中重新说明的 ...

  2. c语言格式对齐填充_C ++中类的大小 课堂上的填充和对齐| 派生类的大小

    c语言格式对齐填充 Prerequisite: 先决条件: sizeof() operator in C/C++ C / C ++中的sizeof()运算符 Size of struct in C C ...

  3. C++语言之一个派生类继承了所有的基类方法,但下列情况除外

    一个派生类继承了所有的基类方法,但下列情况除外: 基类的构造函数.析构函数和拷贝构造函数. 基类的重载运算符. 基类的友元函数.

  4. c 自定义实现string类 clear_CC++语言15|类的继承和派生实现代码重用、扩充

    在C++中,继承是一个对象自动获取其父对象的所有属性和行为的过程.通过继承,您可以重用,扩展或修改在其他类中定义的属性和行为.通过继承,可以实现函数重写以及多态. 在C++中,继承另一个类的成员的类称 ...

  5. C++语言基础 例程 派生类的声明与构成

    贺老师的教学链接  本课讲解 派生类 #include <iostream> #include<string> using namespace std; class Stude ...

  6. C++ Primer 5th笔记(chap 15 OOP)继承之派生类

    1. 构造函数 每个类控制它自己的成员初始化过程:尽管派生类包含了从基类继承而来的成员,但是派生类不能直接初始化这些成员,而是需要使用基类的构造函数来初始化它们. 派生类对象的基类部分与派生类对象自己 ...

  7. java抽象类及其派生类_java抽象类

    本文指标: 1. 最基本的运用:掌握java类最简单,最核心的写法 2. 理论知识:语法角度,设计角度 3. 几种典型应用 最简单也是最核心的抽象类示例: 学习应该是一个循序渐进的过程,学java抽象 ...

  8. C++>继承,继承方式及其比较,子类和父类对象指针,派生类的默认成员函数,虚继承,继承与友元,继承与静态成员

    继承 继承的概念与定义 概念: 继承是指一个子类(或称为派生类)继承父类(或称为基类)的特征(属性和操作).继承是面向对象程序设计时实现代码复用的重要手段,它允许在原有的类的基础上进行扩展,增加功能, ...

  9. C++中基类与派生类的构造函数和析构函数

    1.Cpp中的基类与派生类的构造函数 基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承.构造函数不能被继承是有道理的,因为即使继承了,它的名字和 ...

最新文章

  1. 咖啡html代码,HTML5咖啡生成代码动画
  2. 机器学习中的无监督学习_无监督机器学习中聚类背后的直觉
  3. handler原子锁_Linux的原子操作与同步机制
  4. MongoDB 字段拼接 $concat(aggregation)
  5. rsyslog syslog详解
  6. Ubuntu的奇技淫巧
  7. Python扩展库scipy中值滤波算法的应用
  8. java在win8闪退_解决Win8/Win8.1系统下的IE11闪退的六种方法
  9. c语言定义一个strcmp函数,定义一个strcmp函数实现两个字符串比较,函数原型为int strcmp(char * p1,...
  10. powerdesigner 连接数据库
  11. 【北京迅为】i.MX6ULL终结者MPU6050 六轴传感器例程原理分析
  12. c51单片机外部中断汇编语言,51单片机汇编语言外部中断笔记
  13. 针式打印机保养方法汇总
  14. c语言小饭店等位就餐程序,小饭店预约登记管理系统,
  15. AT89C51中断模板(宏定义)
  16. 使用jQuery easyui和Springdata JPI进行数据的查询
  17. windows 10 专业版构建虚拟机业务Hyper-V
  18. 微信域名防封防屏蔽 微信APP下载链接如何做防封防屏蔽
  19. java之xml进阶教程——使用castor框架
  20. benchmark datasets是什么

热门文章

  1. django框架之中间件
  2. 使用Linux C 简易实现LS(实现过程)
  3. AutoCAD.NET API2018二次开发第十九章
  4. Trigger与Flip-Flop两种‘触发器’的区别
  5. windows11 第三方 截图工具对比
  6. 关于DRV8303/8301电路框图
  7. MSBUILD : error MSB4132: The tools version “2.0“ is unrecognized. Available tools versions are “4.0“
  8. Spring 4 Hello World 例子(带源码)
  9. 慕课学习史上最全零基础入门HTML5和CSS笔记
  10. VScode VSC Netease Music(网易云音乐)插件