C++11之final

C++11之final详解 文章目录1. final关键字1.1 final修饰类 1. final关键字      final是C++11中新引入的一个关键字,它可以应用于类或是成员函数(方法)。当应用于类的时候,它表明该类不允许派生,不允许其他类从final修饰的类进行继承。当用于成员函数(方法)时,可以防止修饰的成员函数被派生类重写、覆盖(但是,创建之类是允许的)。 1.1 final修饰类      任何尝试从一个被final修饰的类中进行继承的操作,编译器都将检测到并给予错误提示。如下例所示: #include <io 阅读详情

C++11之final

作用

限定虚函数或类。指定派生类不能覆写基类的虚函数,或类不能被继承。
位置:对虚函数而言,位置同 override; 对类来说,位于类名之后。
其他位置的 final 同 override 一样,并非保留标识符,无特殊含义,可用作对象名或函数名。

class Base
{
public:
   virtual void foo() { }
   void final() {}             // ok: 此处的 final 并无特殊含义,可以用作函数名
   void override() {}          // ok
};

class Derived : public Base
{
public:
   void foo() final { }        // ok 指定 foo 不能被 Derived 的派生类重写
   virtual void goo() final {} // ok 
   void hoo() final {}         // error: hoo 不是虚函数
};

class C final: public Derived  // 指定类 C 不能被继承
{
public:
   void foo() {}               // error: Derived::foo 被 final 限定, 在 Derived 的派生类 C 中不能被重写
};

class D : public C             // error: 类 C 由final限定,指定类 C 不能再被继承
{
};

final 与 override 的使用就是如此的简单 ?

【C++11保姆级教程】final和override 在C++编程中,我们常常需要使用继承和多态来构建复杂的程序。然而,在继承关系中,有时候我们需要对继承层次做出一些限制,确保某些类或函数不能再被继承或重写。为了解决这个问题,C++11引入了两个关键字,分别是final和override。本篇教程将向大家介绍final和override的具体用法,帮助大家更好地理解和应用这两个关键字。final和override关键字在C++中提供了对类继承和函数重写行为的额外控制。 阅读详情

相关推荐

C++(11):终止虚函数被重写的final

在C++中派生类可以重写基类中的虚函数,以覆盖基类中的操作。这种重写可以无限制的被后继承链的子类利用,C++11增加了final关键字用于终止虚函数的可重写性,也就是说从使用了final开始,后续的子类无法再重写这个虚函数: #include <string> #include <iostream> using namespace std; class Phone{ public: virtual void makeCall(string phoneNumber) {

风静如云的博客 708

C++11新特性final的用法

final的用法是写在虚函数的后面,告知后面继承该类的类不可以再重写该虚函数 非常有意思的一个点就是,这个final其实是不可以加在父类的虚函数后面的,因为当加在了父类的虚函数后面后,那么继承的第一个子类是不能重写该虚函数的,那么就会出现子类也是一个抽象类,是不能够实例化一个对象出来的,后面再继承的对象也都是抽象类,所以一般final可以加在已经子类上,并且该子类要做另一个类的父类,但是又不想让另一个类重写该函数的时候 ...

weixin_43387492的博客 3131

深度学习之基于Pytorch手指静脉识别系统(

一、项目背景与目标手指静脉识别技术是一种新兴的生物特征识别技术,它依据人类手指中流动的血液可吸收特定波长的光线这一科学原理,利用手指内的静脉分布图像来进行身份识别。与传统的生物识别技术(如指纹识别)相比,手指静脉识别技术具有不易伪造、识别精度高、非接触性等特点,因此在安全性要求较高的场景(如金融、医疗、公安等)具有广阔的应用前景。本项目旨在利用PyTorch深度学习框架,构建一套高效、准确的手指静脉识别系统。

Q1744828575的博客 832

c++11 关键字 final 使用

用以指定一个 virtual function 不能被派生类重写; 或者指定一个 class 不能被继承;

私房菜 1992

shader多图叠加变换

shader Shader "Paint3D/AddTexture" { Properties { _MainTex ("Main Texture", 2D) = "white" {} _MainColor("Main Color", Color)=(1,1,1,1) _AddTex0 ("Texture0", 2D) = "white" {} _AddTex1 ("Texture1", 2D) = "white" {} .

李长江的博客 909

OTN传送网实战指南:从光层到电层的完整架构解析(附配置示例)

本文深入解析OTN传送网从光层到电层的完整架构,涵盖关键组件、技术实现及配置示例。通过高速公路与光传送网的类比,详细介绍了光层超宽传输管道构建、电层业务调度核心引擎以及控制平面智能运维实战。附有典型组网方案与故障排查指南,助力网络工程师高效部署与维护OTN传送网。

tomato的博客 684

C++11 final关键字

1.禁用继承 C++11中允许将类标记为final,方法时直接在类名称后面使用关键字final,如此,意味着继承该类会导致编译错误。 实例如下: class A final {}; class B :public A { };//error 2.禁用重写 C++中还允许将方法标记为final,这意味着无法再子类中重写该方法。这时final关键字至于方法参数列表后面,如下: class A { public: virtual void fun() final {}; }; class A { pu

ShenHang_的博客 526

Kinect V1结构光激光散斑原理及样式

   对 intel realsense F200 和 Kinect V1的coding pattern原理进行调研,知二者都使用light coding的方式,该方法与传统的coded structure light不同:传统编码结构光(空间编码,时间编码)最终使用的是三角测量的原理计算深度信息;light coding通过投射具有高度伪随机性的激光散斑,会随着不同距离变换不同

松间明月 1万+

C++11 中 final 和 override 从入门到精通

final和override是 C++11 引入的两个非常有用的关键字,它们为类的继承和多态机制提供了更多的控制权和明确性。final关键字用于指示一个类或成员函数不能被继承或覆盖,而override关键字用于明确指出派生类中的成员函数旨在覆盖基类中的同名虚拟函数。通过对final和override关键字的理解和运用,我们可以更加安全、清晰地设计和实现 C++ 程序。在实际开发中,合理地使用这两个关键字可以提高代码的可读性、安全性和可维护性,避免一些潜在的错误。希望本文能帮助你更好地掌握final和。

码事漫谈 1160

ANSYS Twin Builder实战:5步搞定数字孪生模型部署(附ROM配置技巧)

本文详细解析了ANSYS Twin Builder在数字孪生模型部署中的实战应用,重点介绍了ROM(降阶模型)配置技巧。通过5个关键步骤,从环境搭建到工业部署,帮助工程师高效实现高精度三维仿真到轻量化数字孪生的转化,提升预测性维护和系统仿真效率。

weixin_27330481的博客 661

激光雷达与相机融合(四)----基于激光雷达与相机的碰撞检测

在这一部分,基于前面的各个部分内容,将利用激光雷达和相机实现目标的检测分类及单目标跟踪,并对车辆前方的车辆目标计算相应的碰撞时间TTC。计算方法分别利用相机和雷达实现。 1.系统的总体架构: 2.TTC计算 简单介绍一下通过激光雷达和相机计算碰撞时间的原理: 利用激光雷达点计算碰撞时间:首先根据检测框聚类出前车目标的点,并过滤掉这些点中的离群点,然后找出这些点中相对于本车最近的点,基于前后两帧以及数据采集频率就可以求解出相对速度,然后用当前帧的距离除以速度得出当前的TTC。但该方法对最近点的选取稳定性不是

张飞飞的博客 3986

c++11之final用法

c++11中出现了final关键字,和java中的final一样,c++11中的final关键字是使派生类不可覆盖基类的虚函数。 class A { public: A(){}; ~A(){}; virtual void Fun() final { // } } class B:public A { public: ...

songlipeng的专栏 2690

Windows平台COLMAP实战:从零到三维重建的避坑指南

本文详细介绍了在Windows平台上使用COLMAP进行三维重建的完整流程,包括安装指南、数据准备技巧、图形界面操作及常见问题解决方案。特别针对Windows用户提供了CUDA版本与非CUDA版本的性能对比,帮助用户高效完成从照片到三维模型的重建过程。

weixin_29090677的博客 189

[C++11] override 与 final

目录overridefinal override 与 final 是 c++11中的 说明符(specifier) override 参考页面:https://zh.cppreference.com/w/cpp/language/override 作用:指定一个虚函数覆盖另一个虚函数。 class A { virtual void foo(); void bar(); }; ...

nothing的博客 350

js逆向第3例:蝉妈妈大屏实时数据formDataSign加密

蝉妈妈大屏抖音直播实时数据是抓取抖音直播间数据的实时数据,有类似需求的公司但没有能力去搞定抖音,抓取蝉妈妈数据也是一个不错的选择。接下来就是调试找到加密点,说句题外话蝉妈妈的所有js文件打包方式用的都是webpack5,那如何区分打包方式可以阅读这篇文章。时间戳 ,经过观察发现加密参数是实时变化的。这个函数扣下来,在浏览器控制台中测试一下。言归正传,打断点找到变量。继续打断点向上找又发现了。查看请求参数,可以看到。请求的内容,那么这个。

花臂不花Home 1540

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++11 final 与 override 的用法

final final 是 C++11 新标准的一个关键字! 只有支持C++11新标准的IDE才可以使用! final 有什么作用? 用来修饰类,使该类不能被继承; 用来修饰类的虚函数,使得该虚函数在子类中,不能被重写。 理解:终结fianl所修饰过的任何东西。 一、用来修饰类,使该类不能被继承 代码: #include <iostream> class XiaoMi {...

cpp_learner的博客 1374

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++11 override和final关键字

override关键字用于显示地表明派生类中的成员函数覆盖了基类中的虚函数。当派生类中的函数与基类中的虚函数签名不同或者没有使用override关键字时,编译器会给出警告或错误提示。这样可以避免因为函数签名不同而无法正确覆盖基类中的虚函数,从而导致程序运行时的错误。如果在一个虚函数上使用了final关键字,那么任何派生类都无法再对该函数进行重载。当 final 用于成员函数上时,它表示该函数不能被重写。当 final 用于虚函数上时,它表示该虚函数不能被覆盖。

qq_45780653的博客 1600

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++11的override和final

C++11的override和final 另外补充一下的是C++11提供override 和 final 来修饰虚函数。 实际中我们建议多使用纯虚函数+ override的方式来强制重写虚函数,因为虚函数的意义就是实现多态,如果没有重写,虚函数就没有意义 // 1.final 修饰基类的虚函数不能被派生类重写 class Car { public: virtual void Drive...

didi1663478999的博客 378

C++11 final

一 作用 C++11 新增了关键字final,先看一段说明: The C++11 keyword final has two purposes. It prevents inheriting from classes, and it disables the overriding of a virtual function. 即 final 有两个作用:1、禁止虚函数被重写;2、禁止类被...

程序员Link 539

C++11中final的使用

C++11中final的使用

网络资源是无限的 1万+

C++11之final关键字

C++11之final关键字

《致青春》——云梦泽 1万+

C++11 final 标识符

一、final final 是 C++11 新增的一个标识符 主要用于在类定义时,可以显式强调不能继承 防止我们在使用类的过程中 有意或者无意为该类创建子类 二、举个栗子 1、类继承 看以下代码 #include <iostream> using namespace std; class A {}; class B: public A{}; int main(int argc, char ** argv) { return 0; } B 类是 A 类的派生类 接着

大袖技术 596

C++11 关键字override和final

C++11之前,一直没有继承控制关键字。禁用一个类的进一步衍生是可能的但也很棘手。为避免用户在派生类中重载一个虚函数,你不得不向后考虑。 C++ 11添加了两个继承控制关键字:override和final。 override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名。 final阻止类的进一步派生和虚函数的进一步重载。 final关键字 一个派生类可以重载在基类中声明的成员函数,这是面...

xupeng1644的博客 2106

c++11:override 和 final

c++11:override :https://www.cnblogs.com/xinxue/p/5471708.html 1 公有继承 公有继承包含两部分:一是"函数接口"(interface),二是"函数实现"(implementation) 如 Shape 类中,三个成员函数,表示三种继承方式: class Shape { public: virt...

qq_41543888的博客 240
上一篇: C++11 override
下一篇: C++11 范围 for
linuxwuj
博客等级 码龄16年 25粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值