final 字面上最终、最后、不可改变的意思,final 这个关键字在 Jave PHP C++中都有用到,其作用也基本一致。

C++中的 final 是C++11新增,他可以用来修饰类,让类无法被继承;或用来修饰类的虚函数,让虚函数在子类中不能被重写。

final 只能修饰 类 与 虚函数,无法修饰普通成员函数。

一、 在类的继承关系中 final 的用法,让类无法被继承:

 1 #include <iostream>
2
3 using namespace std;
4
5 class Class_1 final //可以再一开始就修饰 final
6 {
7
8 };
9
10 class Class_2 final :public Class_1 //报错:不能将 final 类用作基类
11 {
12
13 };
14
15 class Class_3 :public Class_2    //报错:不能将 final 类用作基类
16 {
17
18 };

二、 虚函数禁止重写的 final 的方法,让虚函数在子类中不能被重写:

  这种情况,可以继承,可以使用,只是不能够重写。

 1 #include <iostream>
2
3 using namespace std;
4
5 class Class_1
6 {
7 virtual void func() final {} //虚函数 final 修饰
8
9 };
10
11 class Class_2 :public Class_1
12 {
13 void func(); //报错:C++ 无法重写“final”函数 (已声明 所在行数:7)
14 };

=========================================================================================================================

C++ 虚函数表与多态 —— 关键字 final 的用法的更多相关文章

  1. C++ 虚函数表与多态 —— 关键字 override 的用法

    override 仅能用于虚函数,他属于C++新特性,是重写覆盖的意思,他的存在仅仅是为了提高代码的可阅读性: 作用: 1. 提示程序的阅读者,这个函数是重写父类的功能. 2. 防止程序员在重写父类的 ...

  2. C++ 虚函数表与多态 —— 虚函数表的内存布局

       C++面试经常会被问的问题就是多态原理.如果对C++面向对象本质理解不是特别好,问到这里就会崩. 下面从基本到原理,详细说说多态的实现:虚函数 & 虚函数表.   1. 多态的本质: 形 ...

  3. 虚函数表-C++多态的实现原理

    目录 1.说明 2.虚函数表 3.代码示例 参考:http://c.biancheng.net/view/267.html 1.说明 我们都知道多态指的是父类的指针在运行中指向子类,那么它的实现原理是 ...

  4. C++ 虚函数表与多态 —— 多重继承的虚函数表 & 内存布局

    多重继承的虚函数表会有两个虚表指针,分别指向两个虚函数表,如下代码中的 vptr_s_1.vptr_s_2,Son类继承自 Father 和 Mather 类,并且改写了 Father::func_1 ...

  5. C++ 虚函数表与多态 —— 继承的虚函数表 & 内存布局

    1. 使用继承的虚函数表: 如果不涉及多重继承,每个类只有1个虚函数表,当子类继承父类后,子类可以自己改写和新增虚函数,如下图所示: 子类重写 func_1 后,子函数的 func_1 将会有新的逻辑 ...

  6. C++ 虚函数表与多态 —— 多态的简单用法

    首先看下边的代码,先创建一个父类,然后在来一个继承父类的子类,两个类中都有自己的 play() 方法,在代码的第35-37行,创建一个父类指针,然后将子类地址引用赋值给父类,这时调用 P 指针的 pl ...

  7. 从零开始学C++之虚函数与多态(一):虚函数表指针、虚析构函数、object slicing与虚函数

    一.多态 多态性是面向对象程序设计的重要特征之一. 多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为. 多态的实现: 函数重载 运算符重载 模板 虚函数 (1).静态绑定与动态绑 ...

  8. 深入剖析C++多态、VPTR指针、虚函数表

    在讲多态之前,我们先来说说关于多态的一个基石------类型兼容性原则. 一.背景知识 1.类型兼容性原则 类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代.通过公有继承,派 ...

  9. C++多态,虚函数,虚函数表,纯虚函数

    1.多态性   指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作. C++支持两种多态性:编译时多态性,运行时多态性.    a.编译时多态性:通过重载函数实现 ,模板(2次编译)  ...

随机推荐

  1. 对App应用架构搭建的一些思考

    当下随着App开发技术的越来越成熟,多人协同开发必不可少,一个团队中每个人的代码风格.技术栈都存在差异,因此统一一套成熟的开发架构必不可少,可以提高开发效率.统一代码风格.为项目维护提供便利. 当下A ...

  2. 一张900w的数据表,16s执行的SQL优化到300ms?

    一,前言 证实 有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fe ...

  3. 打乱Map key - value的对应顺序

    应用场景:对于考试试卷选择题选项的乱序对应问题,防止考生作弊,每个人的题目都是不一样的选项顺序. package com.muyuan.platform.elearning.util; import ...

  4. UML中常见的类关系你了解吗?

    最近老大给我设计了一个微信扫码登录的通过工具包流程图,设计过程中使用了模板模式.面向接口编程等设计思路,让我很享受整个过程:下来我就接触了一下Java的设计模式,很是懵懂,听说这也是要靠经验来喂,才能 ...

  5. php插入一百万测试数据(实例)

    <?phpset_time_limit(0);function a(){ header("Content-Type:text/html;charset=utf-8"); $s ...

  6. MathType中如何输入正、余弦函数

    MathType是一款强大的数学公式编辑器,正.余弦函数也是中学中非常重要的一节知识点,今天我们介绍一下在MathType中怎么输入正.余弦函数. 具体步骤如下: 步骤一 打开专业的公式编辑软件Mat ...

  7. web自动化测试--iframe切换

    什么是iframe切换,我们在测试web网页过程中,可能会遇到一个网页中嵌套另一个网页的情况,如下图,就是一个ifame嵌套的例子 我们如何切换呢,别急,webdriver里有方法,可以切换到ifra ...

  8. 添加mysqli扩展

    find / -name phpize 进入mysqli目录下 ./configue -prefix=/usr/local/mysqli . make && make install ...

  9. 二分查找 leetcode704

    class Solution {    public int search(int[] nums, int target) {        int l=0;        int r=nums.le ...

  10. php数字运算与格式化

    浮点数高精度运算 PHP 官方手册 浮点数的精度有限.尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16.非基本数学运算可能会给出更大误 ...