深入理解C++ const 关键字<四>修饰类的成员函数
这是C面向对象中极其重要的特性。在函数声明末尾加const表示该函数承诺不会修改调用它的对象即this指向的对象。性质const对象只能调用const成员函数。重载可以同时存在const和非const版本const对象调用const版本非const对象调用非const版本读写分离设计。#include iostream #include string class Data { private: int value_; std::string name_; public: Data(int val, const std::string name) : value_(val), name_(name) {} // ---------- 非 const 版本可修改对象 ---------- // 返回非常量引用允许调用者修改 value_ int getValue() { std::cout 非 const getValue() 被调用 std::endl; return value_; } // 设置 value仅非 const 可调用 void setValue(int newVal) { value_ newVal; std::cout setValue() 被调用新值 newVal std::endl; } // ---------- const 版本只读访问 ---------- // 返回常量引用承诺不修改对象 const int getValue() const { std::cout const getValue() 被调用 std::endl; return value_; } // 获取 name只读仅提供 const 版本也可但为了演示重载也提供两个版本 const std::string getName() const { std::cout const getName() 被调用 std::endl; return name_; } // 非 const 版本可选此处为了演示重载 std::string getName() { std::cout 非 const getName() 被调用 std::endl; return name_; } // 一个 const 成员函数展示其不能修改成员变量编译期保证 void print() const { std::cout Data{ name name_ , value value_ } std::endl; // value_ 100; // 编译错误表达式必须是可修改的左值因为 this 是 const } }; int main() { // 1. 非 const 对象 Data obj(42, example); std::cout 非 const 对象调用 std::endl; // 调用非 const 版本可读写 obj.getValue() 100; // 返回 int可赋值 std::cout 修改后 value obj.getValue() std::endl; // 再次调用 getValue仍然是非 const 版本 obj.setValue(200); obj.getName() modified; // 非 const getName() 返回 std::string可修改 obj.print(); // 2. const 对象 const Data constObj(999, const_example); std::cout \n const 对象调用 std::endl; // const 对象只能调用 const 成员函数 int val constObj.getValue(); // 调用 const getValue() std::string name constObj.getName(); // 调用 const getName() constObj.print(); // print() 是 const可调用 // 下面这行编译错误因为 setValue 不是 const // constObj.setValue(123); // 错误对象有 const 限定符但成员函数没有 const // 下面这行编译错误因为非 const getValue() 返回 int但 const 对象不能调用 // constObj.getValue() 500; // 错误const 对象不能调用非 const 版本 // 3. 演示重载决议通过引用或指针const 版本会被选择 std::cout \n 通过 const 引用调用 std::endl; const Data ref obj; // 将非 const 对象绑定到 const 引用 ref.getValue(); // 调用 const getValue()因为 ref 是 const 限定 // ref.setValue(300); // 错误const 引用不能调用非 const 成员 std::cout \n 通过非 const 引用调用 std::endl; Data nonConstRef obj; nonConstRef.getValue(); // 调用非 const getValue() return 0; }

相关新闻

最全总结|聊聊 Selenium 隐藏浏览器指纹特征的几种方式!

最全总结|聊聊 Selenium 隐藏浏览器指纹特征的几种方式!

大家好,我是安果!当我们运用对网页开展爬虫操作时, 要是不做任何处理就直接着手进行爬取, 那么会致使诸多特征处于暴露的状态。对一些做了反爬的网站,做了特征检测,用来阻止一些恶意爬虫本篇文章将介绍几种常用的隐藏浏览器指纹特…

2026/8/22 11:34:54 阅读更多 →
强化学习环境分类与技术趋势实证研究:从像素到智能体的演进

强化学习环境分类与技术趋势实证研究:从像素到智能体的演进

1. 项目概述:从像素到智能体,我们如何理解强化学习的“练兵场”如果你最近在关注强化学习(Reinforcement Learning, RL)的进展,无论是AlphaGo的棋局还是各类游戏AI的惊艳表现,背后都有一个至关重要的“无名…

2026/8/22 10:43:49 阅读更多 →
智慧校园安全运维升级:智能锁人电联动与权限管控落地方案

智慧校园安全运维升级:智能锁人电联动与权限管控落地方案

在智慧校园数字化、精细化、安全化建设的大背景下,高校宿舍、公共教室、实训功能房、琴房等场景的管理短板日益凸显。传统人工查寝、机械钥匙管理、固定时段通断电的模式,存在人员准入混乱、身份核验缺失、违规用电频发、设备故障率高、后勤人力成本冗余…

2026/8/22 8:08:09 阅读更多 →

最新新闻

大语言模型在科研论文中的深度应用与风险防范指南

大语言模型在科研论文中的深度应用与风险防范指南

最近一年,如果你在 arXiv 或各大顶会论文库中浏览,可能会发现一个微妙但显著的变化:论文的“致谢”或“方法”部分,出现“We thank ChatGPT for…”或“We utilized GPT-4 for…”这类声明的频率越来越高。这不再是个别现象&#…

2026/8/22 18:14:11 阅读更多 →
PyMacroRecord:免费键鼠宏录制工具,重复操作一键托管

PyMacroRecord:免费键鼠宏录制工具,重复操作一键托管

PyMacroRecord:免费键鼠宏录制工具,重复操作一键托管 【免费下载链接】PyMacroRecord Free and Open Source Macro Recorder with a modern GUI using Python 项目地址: https://gitcode.com/gh_mirrors/py/PyMacroRecord 同样 20 个地方点一遍、…

2026/8/22 18:14:11 阅读更多 →
基于AI与间隔重复算法构建个性化单词学习工具

基于AI与间隔重复算法构建个性化单词学习工具

你是不是也遇到过这样的困境:背单词软件用了不少,但总是“背了忘、忘了背”,陷入无效循环?市面上的工具要么功能单一,要么算法死板,无法根据你的记忆状态动态调整。今天,我们不谈空泛的AI概念&a…

2026/8/22 18:14:11 阅读更多 →
双碳目标下低碳建筑数学建模:从碳排放核算到多目标优化

双碳目标下低碳建筑数学建模:从碳排放核算到多目标优化

1. 从“双碳”目标到数学建模:一个建筑师的视角转变作为一名在建筑行业摸爬滚打了十几年的从业者,我经历过从手绘图纸到CAD,再到BIM(建筑信息模型)的技术变迁。但最近几年,一个词反复出现在项目评审会、政策…

2026/8/22 18:14:11 阅读更多 →
锂电池工程师面试核心考点与实战解析

锂电池工程师面试核心考点与实战解析

1. 锂电池行业面试现状解析最近三年新能源行业爆发式增长,锂电池工程师岗位需求激增。根据行业调研数据显示,2023年动力电池领域人才缺口达到8.7万人,其中研发和工艺工程师占比超过60%。这种供需失衡导致企业面试难度水涨船高,技术…

2026/8/22 18:14:11 阅读更多 →
社交推理AI智能体:基于BDI模型与强化学习的狼人杀AI设计与实现

社交推理AI智能体:基于BDI模型与强化学习的狼人杀AI设计与实现

1. 项目概述:当狼人杀遇上AI,一个推理智能体的诞生最近在AI智能体领域,一个名为“Revac”的项目引起了我的注意。它的全称是“Social Deduction Reasoning Agent”,直译过来就是“社交演绎推理智能体”。简单来说,这是…

2026/8/22 18:13:11 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/22 18:08:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →