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

C++ const /noexcept/override/final/delete一口吃透

一、const 关键字成员函数版1. 语法返回值 函数名(参数) const { ... }2. 核心作用const 修饰成员函数承诺本函数不会修改类的普通成员变量。3. 硬性规则const 成员函数不能修改普通成员变量const 成员函数不能调用非 const 成员函数const 对象 只能调用 const 成员函数普通对象可以调用 const 成员函数void f();和void f() const;构成函数重载4. 示例class Test { int x; public: void set(int v) { x v; } // 可修改 int get() const { return x; } // 只读不能改x };5. 常成员变量const int a 10;必须初始化之后不能修改。二、override 关键字1. 语法只能用在派生类的虚函数末尾virtual void fun() override;2. 核心作用显式告诉编译器这个函数是用来重写父类的虚函数请严格检查格式是否一致。3. 检查哪些东西编译器强制校验函数名必须一样参数列表必须一样返回值兼容const 修饰必须一致虚函数属性匹配4. 为什么要用不加 override你写错参数 / 漏写 const → 编译器不报错不会重写变成隐藏多态直接失效运行时 bug加 override只要和父类虚函数对不上直接编译报错提前排错示例class Base { public: virtual void show() const {} }; class Deri : public Base { public: // 正确完全匹配 void show() const override {} // 错误少了constoverride直接报错 // void show() override; };三、final 关键字两种用法用法 1修饰虚成员函数作用禁止子类继续重写这个虚函数class Base { public: virtual void f() final {} }; class Son : public Base { public: // 编译报错f是final不能重写 // void f() override; };用法 2修饰类作用禁止这个类被继承class A final { }; // 编译报错不能继承final类 // class B : public A { };总结口诀final 函数不许再重写final 类不许再继承四、noexcept 关键字1. 语法void fun() noexcept;2. 核心作用给编译器承诺这个函数绝对不会抛出异常。3. 好处编译器可以做更好优化STL 容器vector会优先选择 noexcept 的移动构造 / 移动赋值提升性能代码语义清晰一眼看出不会抛异常4. 违规后果如果标了 noexcept内部却强行throw程序直接调用std::terminate强制终止。5. 常用场景移动构造函数移动赋值运算符简单只读工具函数const 成员函数常搭配 noexcept示例int getVal() const noexcept { return x; }五、delete 关键字 禁用函数1. 语法函数声明 delete;2. 核心作用把某个函数直接 “删掉”禁止任何人调用调用就编译报错。3 大常用场景场景 1禁用编译器默认生成的函数默认函数包括默认构造拷贝构造赋值重载析构函数class Person { public: // 禁用默认构造 Person() delete; // 禁用拷贝构造 Person(const Person) delete; // 禁用赋值 Person operator(const Person) delete; };场景 2禁用函数重载版本void func(int); // 禁止传double void func(double) delete;场景 3禁止隐式类型转换struct A { // 禁止用int构造禁止隐式转换 A(int) delete; };4. 特点编译期禁止运行时无隐患比 private 禁用更干净、更规范六、五个关键字组合标准写法工程 / 考试标配class Base { public: // 虚函数 const noexcept virtual void show() const noexcept 0; }; class Son : public Base { public: // 重写 校验override 只读const 不抛异常noexcept 禁止后代再重写final void show() const noexcept override final; };七、终极一句话背诵期末必考const成员函数只读不修改成员变量const 对象只能调用 const 函数。override派生类显式重写虚函数编译器强制签名校验防止多态出错。final修饰虚函数禁止重写修饰类禁止继承。noexcept承诺函数不抛异常利于编译优化和 STL 性能提升。delete禁用指定函数禁止调用、禁止默认函数、禁止隐式转换。

相关文章:

C++ const /noexcept/override/final/delete一口吃透

一、const 关键字(成员函数版)1. 语法返回值 函数名(参数) const { ... }2. 核心作用const 修饰成员函数:承诺本函数不会修改类的普通成员变量。3. 硬性规则const 成员函数不能修改普通成员变量const 成员函数不能调用非 const 成员函数const…...

3分钟在Windows上安装安卓应用:APK安装器终极指南

3分钟在Windows上安装安卓应用:APK安装器终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行安卓应用,但厌倦了…...

Depth-Anything-V2单目深度估计架构解析与边缘部署实战优化

Depth-Anything-V2单目深度估计架构解析与边缘部署实战优化 【免费下载链接】Depth-Anything-V2 [NeurIPS 2024] Depth Anything V2. A More Capable Foundation Model for Monocular Depth Estimation 项目地址: https://gitcode.com/gh_mirrors/de/Depth-Anything-V2 …...

终极PKHeX自动化插件完整指南:如何轻松打造完全合法的宝可梦

终极PKHeX自动化插件完整指南:如何轻松打造完全合法的宝可梦 【免费下载链接】PKHeX-Plugins Plugins for PKHeX 项目地址: https://gitcode.com/gh_mirrors/pk/PKHeX-Plugins 还在为宝可梦数据合法性而烦恼吗?手动调整个体值、技能组合和特性配置…...

Depth-Anything-V2:单目深度估计基础模型的全面技术解析与实践指南

Depth-Anything-V2:单目深度估计基础模型的全面技术解析与实践指南 【免费下载链接】Depth-Anything-V2 [NeurIPS 2024] Depth Anything V2. A More Capable Foundation Model for Monocular Depth Estimation 项目地址: https://gitcode.com/gh_mirrors/de/Depth…...

B站缓存视频转换终极方案:m4s-converter一键解决播放难题

B站缓存视频转换终极方案:m4s-converter一键解决播放难题 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站缓存视频无法…...

Taotoken 用量看板如何帮助团队管理大模型 API 成本

Taotoken 用量看板如何帮助团队管理大模型 API 成本 1. 用量看板的核心功能 Taotoken 用量看板为团队管理员提供了多维度的 API 调用数据可视化能力。在控制台的「用量分析」页面,系统会按小时、天、周或自定义时间范围聚合展示以下核心指标:总消耗 to…...

python tortoise-orm

# Python Pony:一个被低估的ORM,其实比你想的更好用 说到Python的ORM,大部分人第一个想到的是SQLAlchemy,其次是Django ORM。如果你去问十个Python开发者,可能有七八个会提到这两个。Pony ORM?也许有人听说…...

MacType:让你的Windows字体焕然一新

MacType:让你的Windows字体焕然一新 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype 还在为Windows系统模糊的字体显示而烦恼吗?MacType是一款强大的开源字体渲染增强工具&am…...

python pony

# Python Pony:一个被低估的ORM,其实比你想的更好用 说到Python的ORM,大部分人第一个想到的是SQLAlchemy,其次是Django ORM。如果你去问十个Python开发者,可能有七八个会提到这两个。Pony ORM?也许有人听说…...

对比直接使用厂商 API 与通过 Taotoken 调用的成本透明度差异

对比直接使用厂商 API 与通过 Taotoken 调用的成本透明度差异 1. 多厂商 API 账单管理的挑战 当个人开发者直接对接多个大模型厂商时,成本管理往往面临显著挑战。每个厂商通常提供独立的控制台和账单系统,开发者需要分别登录不同平台查看使用情况。这种…...

在自动化测试流程中集成 Taotoken 实现智能断言生成

在自动化测试流程中集成 Taotoken 实现智能断言生成 1. 自动化测试中的断言生成挑战 编写和维护自动化测试脚本是测试工程师日常工作的重要组成部分。其中,断言语句的生成与校验往往需要大量人工介入,尤其是在处理复杂业务逻辑或动态数据时。传统方式下…...

如何快速掌握TouchGal:从零开始的完整Galgame社区实战指南

如何快速掌握TouchGal:从零开始的完整Galgame社区实战指南 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next TouchGal是一个…...

利用 Taotoken 实现多模型 API 密钥的统一管理与访问控制

利用 Taotoken 实现多模型 API 密钥的统一管理与访问控制 1. 多模型密钥管理的核心挑战 在中大型项目或企业环境中,不同团队或项目往往需要访问不同的大模型能力。传统模式下,每个团队单独管理自己的 API 密钥会导致以下问题:密钥分散难以追…...

在Nodejs后端服务中集成Taotoken实现异步AI对话功能

在Nodejs后端服务中集成Taotoken实现异步AI对话功能 1. 项目初始化与环境配置 在Node.js后端项目中集成Taotoken的第一步是安装必要的依赖包。使用npm或yarn安装官方OpenAI JavaScript SDK,该SDK兼容Taotoken的API接口规范: npm install openai建议将…...

从零掌握提示工程:系统化学习与AI高效对话的核心技艺

1. 项目概述:从零到一,掌握与AI对话的核心技艺最近几年,AI对话模型的能力突飞猛进,从简单的问答到复杂的创作、编程、分析,几乎无所不能。但你是否也有过这样的困惑:面对同一个AI,别人能轻松让它…...

机器人记忆与策略理解:关键技术突破与应用实践

1. 项目背景与核心挑战在机器人智能化发展的进程中,记忆能力和策略理解一直是制约其实际应用的两大瓶颈。我们团队最近完成的"机器人记忆基准测试与通用策略理解"项目,正是针对这两个关键问题展开的系统性研究。记忆能力决定了机器人能否有效积…...

PvZWidescreen技术解析:用Rust重绘经典游戏的宽屏体验

PvZWidescreen技术解析:用Rust重绘经典游戏的宽屏体验 【免费下载链接】PvZWidescreen Widescreen mod for Plants vs Zombies 项目地址: https://gitcode.com/gh_mirrors/pv/PvZWidescreen 你是否曾在现代宽屏显示器上重温《植物大战僵尸》时,被…...

基于AI智能体的加密市场叙事分析与趋势追踪系统构建

1. 项目概述:一个能自主思考的加密市场情报员 最近在SURGE OpenClaw的黑客松里,我和团队捣鼓出了一个挺有意思的东西,我们叫它 MoltTrend Claw 。简单来说,它是一个能自己“看”市场、自己“想”问题、自己“写”报告的加密市…...

B站视频下载终极指南:3步搞定无水印高清视频下载

B站视频下载终极指南:3步搞定无水印高清视频下载 【免费下载链接】BiliDownload B站视频下载工具 项目地址: https://gitcode.com/gh_mirrors/bil/BiliDownload BiliDownload是一款基于Java开发的专业B站视频下载工具,通过调用B站WEB端和TV端API实…...

用Python复现地震波走时计算:从SPM到SPFSM,手把手教你实现射线追踪(附完整代码)

Python实现地震波走时计算:从SPM到SPFSM的算法演进与代码实战 地震波走时计算是地球物理勘探中的基础问题,无论是油气资源勘探还是地下结构成像,都需要精确计算地震波从震源到接收点的传播时间。传统的最短路径法(SPM)…...

Kafka 事务机制 跨分区 + 跨会话 通俗讲解 + 可运行代码示例

Kafka 事务机制 跨分区 跨会话 通俗讲解 可运行代码示例 一、先白话定义 1. 跨分区写入 一次业务,需要往多个分区 / 多个主题发送多条消息。 事务保证:多条消息要么全部提交消费者可见,要么全部回滚一条都看不见,不会中间成功一…...

终极RPG Maker MV/MZ插件集合:500+免费插件打造专业级游戏开发体验

终极RPG Maker MV/MZ插件集合:500免费插件打造专业级游戏开发体验 【免费下载链接】RPGMakerMV RPGツクールMV、MZで動作するプラグインです。 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerMV 你是否曾为RPG Maker有限的游戏机制而苦恼&#xff1f…...

LRCGET:离线音乐库批量歌词下载与同步的智能解决方案

LRCGET:离线音乐库批量歌词下载与同步的智能解决方案 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 你是否曾为海量离线音乐文件寻找同步歌…...

突破网盘下载限制:智能直链解析工具助你告别龟速下载

突破网盘下载限制:智能直链解析工具助你告别龟速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

一文读懂 Graphify 知识图谱

Graphify 是一款开源、本地优先的多模态知识图谱构建工具,主打 “一条命令把任意文件夹(代码 / 文档 / 图片 / PDF 等)转成可查询、持久化的知识图谱”,2026 年 4 月由开发者 Safi Shamsi 发布,短时间内获得高人气。它…...

分布式水文模型学习进展

swat模型及分布式水文模型使用与开发简介问题记录简介 这是swat及其他分布式水文模型的使用及开发过程中遇到的问题及解决方法的记录,目前仅为暂时的、非完整、非体系化的记录,待日后完善。 问题记录 什么都对但结果数量级不对 : 分几种情…...

创业公司如何利用 Taotoken 管理多个 AI 模型的调用成本

创业公司如何利用 Taotoken 管理多个 AI 模型的调用成本 1. 多模型统一接入的价值 对于资源有限的创业团队而言,产品开发过程中往往需要尝试多种大模型能力。传统方式需要为每个供应商单独注册账号、管理多个 API Key,不仅增加运维负担,也难…...

PCIe 5.0测试入门:手把手教你用示波器和VNA完成发射机(Tx)与接收机(Rx)一致性测试

PCIe 5.0测试实战指南:从设备校准到信号分析的完整流程 实验室的灯光下,一台搭载PCIe 5.0接口的显卡正在测试台上静静等待验证。32GT/s的数据传输速率对硬件设计提出了前所未有的挑战,而精确的测试流程则是确保产品可靠性的关键防线。本文将带…...

告别龟速!手把手教你将Jetson Xavier NX系统迁移到NVMe固态硬盘(附rootOnNVMe脚本详解)

Jetson Xavier NX系统迁移至NVMe固态硬盘实战指南 1. 为什么需要将系统迁移到NVMe固态硬盘? Jetson Xavier NX作为NVIDIA推出的边缘计算设备,默认配置的EMMC存储虽然稳定,但在实际AI应用场景中往往成为性能瓶颈。当运行计算机视觉模型或处理高…...