news 2026/5/28 23:45:21

17. mutable

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
17. mutable

1.mutable 的核心用法

2.mutable 的使用限制


1.mutable 的核心用法

1).回顾:const成员函数的默认规则,类的const成员函数中,默认不能修改任何普通的成员变量
#include <iostream>#include <string>usingnamespacestd;classPerson{private:stringname;intaccess_count;// 访问计数:记录getName被调用的次数public:Person(stringn):name(n),access_count(0){}// const成员函数:默认不能修改成员变量stringgetName()const{access_count++;// 错误!const函数不能修改普通成员变量returnname;}};intmain(){constPersonp("Alice");cout<<p.getName()<<endl;return0;}

2).mutable的核心用法:豁免const函数的修改限制,给access_count加上mutable修饰后,就能在const成员函数中修改它
#include <iostream>#include <string>usingnamespacestd;classPerson{private:stringname;mutableintaccess_count;// mutable修饰:允许const函数修改public:Person(stringn):name(n),access_count(0){}// const成员函数:可以修改mutable变量stringgetName()const{access_count++;// 合法!mutable变量不受const限制cout<<"getName被调用了 "<<access_count<<" 次"<<endl;returnname;}// 获取访问计数(辅助函数)intgetCount()const{returnaccess_count;}};intmain(){constPersonp("Alice");// const对象,只能调用const成员函数cout<<p.getName()<<endl;// 输出:getName被调用了 1 次 → Alicecout<<p.getName()<<endl;// 输出:getName被调用了 2 次 → Alicecout<<"总调用次数:"<<p.getCount()<<endl;// 输出:2return0;}

2.mutable 的使用限制

a."只能修饰类的非静态成员变量":不能修饰全局变量,局部变量,函数参数,静态成员变量(static),const变量

b.线程安全:如果mutable变量被多线程访问,需要手动加锁(const函数不保证线程安全)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 13:39:00

一键部署GTE中文向量模型:语义搜索从入门到精通

一键部署GTE中文向量模型&#xff1a;语义搜索从入门到精通 1. 为什么你需要一个真正懂中文的向量模型&#xff1f; 你有没有遇到过这样的问题&#xff1a; 用传统关键词搜索&#xff0c;输入“手机电池不耐用”&#xff0c;结果却跳出一堆“手机壳”“手机膜”的广告&#x…

作者头像 李华
网站建设 2026/5/23 10:13:10

从零开始:基于GTE+SeqGPT的智能对话系统搭建

从零开始&#xff1a;基于GTESeqGPT的智能对话系统搭建 你有没有试过这样一种场景&#xff1a;用户问“手机充一次电能用几天&#xff1f;”&#xff0c;而你的知识库只写了“电池容量5000mAh&#xff0c;典型视频播放续航18小时”——关键词完全不匹配&#xff0c;传统搜索直…

作者头像 李华
网站建设 2026/5/13 5:36:16

如何高效配置TranslucentTB实现完美Windows任务栏透明效果

如何高效配置TranslucentTB实现完美Windows任务栏透明效果 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB TranslucentTB是一款轻量级开源工具&#xff0c;能够帮助Windows用户轻松实现任务栏透明化、亚克力模糊等视觉效…

作者头像 李华
网站建设 2026/5/20 20:13:45

Granite-4.0-H-350m与IDEA集成:Java开发环境配置

Granite-4.0-H-350m与IDEA集成&#xff1a;Java开发环境配置 1. 为什么选择Granite-4.0-H-350m作为Java开发助手 在Java开发中&#xff0c;我们经常需要快速生成代码片段、理解复杂逻辑、调试异常信息&#xff0c;或者为项目文档编写说明。传统方式依赖搜索引擎和反复查阅文档…

作者头像 李华
网站建设 2026/5/22 9:34:46

智能消息同步工具:零基础实现多平台信息高效流转

智能消息同步工具&#xff1a;零基础实现多平台信息高效流转 【免费下载链接】wechat-forwarding 在微信群之间转发消息 项目地址: https://gitcode.com/gh_mirrors/we/wechat-forwarding 核心功能&#xff1a;智能消息同步工具让多群信息流转不再繁琐&#xff0c;无需编…

作者头像 李华