当前位置: 首页 > news >正文

【4】c++11新特性(稳定性和兼容性)—>final关键字

c++中增加了final关键字来限制某个类不能被继承,或者某个虚函数不能被重写。如果使用final修饰函数,只能修饰虚函数,并且放在类或者函数的后面。
修饰函数

#include <iostream>
using namespace std;class Base
{
public:virtual void test() = 0;
};class Child : public Base
{
public:void test() final{cout << "Child class...";}
};class GrandChild : public Child
{
public:// 语法错误, 不允许重写void test(){cout << "GrandChild class...";}
};int main()
{Base* c = new Child;c->test();Base* g = new GrandChild;g->test();return 0;
}

在这里插入图片描述
在子类重写了这个方法,使用final标记后,孙子类就不能重写了。

修饰类

final修饰过的类,不允许被继承,也就是说这个类不能有派生类。

#include <iostream>
using namespace std;class Base
{
public:virtual void test(){cout << "Base class...";}
};class Child final : public Base
{
public:void test(){cout << "Child class...";}
};// error, 语法错误
class GrandChild : public Child
{
public:
};int main()
{Base* c = new Child;c->test();Base* g = new GrandChild;g->test();return 0;
}

在这里插入图片描述

http://www.lryc.cn/news/196672.html

相关文章:

  • 23基于MATLAB的小波降噪,默认阈值消噪,强制消噪,给定软阈值消噪方法,数据直接替换后就可以跑。
  • 蓝桥杯 常用STL (C++) 未完待续
  • class id
  • Qt (QInputDialog 、QMessageBox、QMessageBox)对话框实战
  • Java 解析 cURL(bash) 命令
  • JDK21的虚拟线程是什么?和平台线程什么关系?
  • Unity DOTS Component概述
  • element ui 下拉框 选择月份和天数
  • 用Java包com.sun.net.httpserver下面的类实现一个简单的http服务器demo
  • unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接
  • LeetCode算法位运算—只出现一次的数字
  • vcpkg manifest 的使用
  • 选择什么电容笔比较好?平板手写笔推荐
  • pdf转二维码怎么做?pdf二维码制作简单技巧
  • 【CANoe】TX Self-ACK自应答配置与CPAL实现
  • (Python)MATLAB mat矩阵和Python npy矩阵转换
  • Flink1.14 SourceReader概念入门讲解与源码解析 (三)
  • PS运行中缺失d3dcompiler_47.dll问题的5个有效修复方法总结
  • 【MATLAB-Retinex图像增强算法的去雾技术】
  • 使用 2 个 HSplitView 在 swiftUI 中创建一个 3 窗格界面
  • 【C++ 操作符重载:定制自己的运算符行为】
  • Android Fragment 基本概念和基本使用
  • xml schema中的all元素
  • Java8实战-总结42
  • 实现日期间的运算——C++
  • 云上攻防-云原生篇K8s安全Config泄漏Etcd存储Dashboard鉴权Proxy暴露
  • ChatGPT 的工作原理学习 难以理解 需要先找个容易的课来跟下。
  • 5.DApp-前端网页怎么连接MetaMask
  • 手机应用app打开游戏显示连接服务器失败是什么原因?排查解决方案?
  • 【Java学习之道】指引篇:从入门到入世