63.C++ mutable关键字

news2024/11/17 11:39:36

mutable 是C++中的一个关键字,它用于修饰类的成员变量。当一个成员变量被声明为 mutable 时,它将允许在常量成员函数中修改这个成员变量的值,即使这个成员函数被声明为 const

常量成员函数是类的成员函数,它们承诺不会修改类的成员变量,因此在常量成员函数中,通常是不允许修改任何非 mutable 的成员变量的。但是,有些情况下,您可能希望在常量成员函数中修改某些状态,例如在缓存中保存某些计算结果,而不想破坏类的 const 承诺。这时就可以使用 mutable 修饰那些需要在常量成员函数中修改的成员变量。

下面是一个示例,演示了 mutable 的用法:

class MyClass {
private:
    //int data;
    mutable int cachedValue; // 使用 mutable 修饰的成员变量

public:
    MyClass(int value) : cachedValue(value) {}

    int getValue() const { // 常量成员函数
        // 在常量成员函数中修改 mutable 成员变量
        cachedValue++; // 合法,因为 cachedValue 是 mutable
        return cachedValue;
    }
};

int main() {

    const MyClass obj(42);
    cout << obj.getValue() << endl; // 调用常量成员函数

    return 0;
}

在上述示例中,cachedValue 被声明为 mutable,因此它可以在 getValue 常量成员函数中被修改,即使 getValue 被标记为 const。这种情况下,cachedValue 的值会在每次调用 getValue 时增加。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/963067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建现代应用:Java中的热门架构概览

文章目录 1. 三层架构2. Spring框架3. 微服务架构4. Java EE&#xff08;Enterprise Edition&#xff09;5. 响应式架构6. 大数据架构7. 领域驱动设计&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;8. 安卓开发架构结论 &#x1f389;欢迎来到Java学习路线专栏~…

【算法竞赛宝典】猴子吃桃

【算法竞赛宝典】猴子吃桃 题目描述代码展示答案 题目描述 代码展示 //猴子吃桃 #include <iostream>using namespace std;int main() {int day 9, x1, x2 1;while (day > 0) {x1 (x2 1) * 2;//第&#xff11;天的桃子数是第&#xff12;的天的桃子数加&#xff…

[虚幻引擎插件介绍] DTGlobalEvent 蓝图全局事件, Actor, UMG 相互回调,自由回调通知事件函数,支持自定义参数。

本插件可以在虚幻的蓝图 Actor&#xff0c; Obiect&#xff0c;UMG 里面指定绑定和执行消息&#xff0c;可带自定义参数。 参数支持 Bool&#xff0c;Byte&#xff0c;Int&#xff0c;Int64&#xff0c;Float&#xff0c;Name&#xff0c;String&#xff0c;Text&#xff0c;Ve…

自定义spring-boot-start的jar包被引用时,提示找不到bean

类似这个报错&#xff1a; 重点要看一下我们自定义的start包下的config配置 BeanConditionalOnProperty(prefix "file", value "iSenable", havingValue "true")public FileServiceTemplate fileServiceTemplate(){return new FileServiceTe…

开开心心带你学习MySQL数据库篇之二

如何增大自己进入大厂的概率? 作业写得扎实,博客写得扎实,github/gitee搞的扎实 > 进入大厂的概率就会超过其他同学. 对于最近java行业有点饱和的看法? 大家不要只关注编程语言,这就把路走窄了!!! ~~ 投简历的时候,各种相关的岗位都是可以尝试的 ~~ 除了投后端开发,还…

Lliux管理员一些小技巧

1、查看bash日志 history命令显示日期和时间 2、打印时候对行列转换 xargs命令是改变已存在的文件的输出格式。“cat 文件名”是根据文件的行分隔符输出显示在屏幕上。如想改变一下&#xff0c;想把所有行合并为一行&#xff0c;就可以使用管道及xargs命令。 cat 文件名 |…

Bevformer:通过时空变换从多摄像机图像学习鸟瞰图表示

论文地址&#xff1a;BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 代码地址&#xff1a;https://github.com/zhiqi-li/BEVFormer 论文背景 三维视觉感知任务&#xff0c;包括基于多摄像机图像的三维检测…

外贸soho不要随便给客户推荐供应商

我们常常以为大公司做事会更稳妥&#xff0c;更有保障&#xff0c;很多时候愿意选择大公司合作&#xff0c;为的就是图个心安&#xff0c;最近碰到的事实恰好相反&#xff01; 事情经过是这样的&#xff0c;有个客户除了找家具之外&#xff0c;还找很多其他的产品&#xff0c;…

芯片开发之难如何破解?龙智诚邀您前往DR IP-SoC China 2023 Day

2023年9月6日&#xff08;周三&#xff09;&#xff0c;龙智即将亮相D&R IP-SoC China 2023 Day&#xff0c;呈现集成了Perforce与Atlassian产品的芯片开发解决方案&#xff0c;助力企业更好、更快地进行芯片开发。 龙智资深顾问、技术支持部门负责人李培将带来主题演讲—…

无网安装OpenLDAP

一、服务器操作系统 CentsOS8.2 二、软件获取 2.1、OpenLDAP 官网下载OpenLDAP 2.2、BDB berkeley-db-5.1.29 (OpenLDAP当前与6.x版本不兼容&#xff0c;READEME中明确写出兼容4.44.8或5.05.1)&#xff1a; BerkeleyDB下载 2.3、LDAP Administrtor LDAP Administrtor…

基于改进莱维飞行和混沌映射的粒子群优化BP神经网络分类研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

VScode SSH无法免密登录

配置方法 引用高赞贴&#xff1a;点击 debug方法 连不上需要找到问题原因&#xff0c;看ssh的 log Linux服务器&#xff1a;2222是我们指定的端口&#xff0c;可以是1234等 sudo /usr/sbin/sshd -d -p 2222windows这边&#xff1a;端口号要一致 ssh -vvv ubuntusername192…

Windows NUMA编程实践 – 处理器组、组亲和性、处理器亲和性及版本变化

Windows在设计之初没有考虑过对大数量的多CPU和NUMA架构的设备的支持&#xff0c;大部分关于CPU的设计按照64个为上限来设计。核心数越来越多的多核处理器的进入市场使得微软不得不做较大的改动来进行支持&#xff0c;因此Windows 的进程、线程和NUMA API在各个版本中行为不一样…

NoSQL技术——Redis

简单介绍 Redis是当下最流行的NoSQL数据库。在Redis中&#xff0c;数据的存储格式是以键值对的方式进行存储的。在键值对的存储形式中&#xff0c;值除了是常见的字符串&#xff0c;也可以是类似于Json对象的形式&#xff0c;或者是List&#xff0c;Map等数组格式&#xff0c;…

NVIDIA CUDA Win10安装步骤

前言 windows10 版本安装 CUDA &#xff0c;首先需要下载两个安装包 CUDA toolkit&#xff08;toolkit就是指工具包&#xff09;cuDNN 1. 安装前准备 在安装CUDA之前&#xff0c;需要完成以下准备工作&#xff1a; 确认你的显卡已经正确安装&#xff0c;在设备管理器中可以看…

大模型重塑区域人才培养,飞桨(重庆)人工智能教育创新中心正式启动

2023年8月22日&#xff0c;重庆市高校人工智能产教融合院长研讨会暨飞桨&#xff08;重庆&#xff09;人工智能教育创新中心启动仪式在重庆大学成功召开。会上&#xff0c;由百度飞桨、重庆大学组织重庆市二十一所高校共建的飞桨&#xff08;重庆&#xff09;人工智能教育创新中…

5.(Python数模)固定费用问题

Python解决固定费用问题 具体文章参考博文 问题描述 源代码 import pulp # 导入 pulp 库# 主程序 def main():# 固定费用问题(Fixed cost problem)print("固定费用问题(Fixed cost problem)")# 问题建模&#xff1a;"""决策变量&#xff1a;y…

stable diffusion实践操作-原理

本文专门开一节SD原理相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 正文 1 原理

linux定时删除服务器日志

不说废话。直接进入操作流程 linux 定时任务是用的crontab 查看 crontab是否启动 service crond statusdead 死的 启动crontab service crond start 再次查看状态 running 运转的 查看 crontab cat /etc/crontab 查看 crontab任务 crontab -l 编辑 crontab任务 crontab …

ebay测评,物理环境与IP环境:解决平台风控问题的关键

近期eBay平台出现了大量风控问题&#xff0c;导致许多买家账号受到影响。实际上&#xff0c;这主要是由于环境搭建方面存在主要问题。时至2023年&#xff0c;许多人的技术方案仍停留在几年前&#xff0c;要么使用一键新机工具配合国外IP&#xff0c;要么使用指纹浏览器配合国外…