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

C++关键字:mutable

文章目录

    • 一、mutable
      • 1.mutable修饰非静态的成员变量
      • 2.mutable用于lambda表达式
      • 3.mutable不能修饰的变量:静态变量、const变量

一、mutable

1.mutable修饰非静态的成员变量

1.mutable仅能修饰类中的非静态的成员变量。不能修饰全局变量、局部变量、静态变量、常量。
2.被mutable修饰的成员变量,可以在const成员函数中被修改。尤其是维护一些统计信息时,是希望可以在const成员函数中自增这些统计信息的,而不希望修改其他关键变量。
【被static修饰的静态成员变量,属于类不属于对象,也可以在const成员函数中被修改】

#include <iostream> 
#include <string>
using std::cout;
using std::string;class Log
{
public:void print(const string & str) const{cout << str << "\n";printNums++;cout << printNums << "\n";printnums++;cout << printnums << "\n";}
private:  //被mutable修饰的成员变量,可以在const成员函数中被修改mutable int printNums = 0; static int printnums;
};int Log::printnums = 100;int main()
{Log log;log.print("666");log.print("hello world");return 0;
}

2.mutable用于lambda表达式

mutable允许在捕获变量的副本上进行修改。默认情况下,lambda表达式中的捕获变量是const,使用 mutable 可以解除这种限制。

auto lambda = [count = 0]() mutable {count++; // 如果没有 mutable,捕获的 count 就是 const,无法修改std::cout << "Count: " << count << std::endl;
};
lambda(); // 输出: Count: 1
lambda(); // 输出: Count: 2

3.mutable不能修饰的变量:静态变量、const变量

被static、const修饰的变量,不能再用mutable修饰,是冲突的。

mutable仅能修饰类中的非静态的成员变量。不能修饰全局变量、局部变量、静态变量、常量。

'mutable' can only be applied to member variables
http://www.lryc.cn/news/478549.html

相关文章:

  • Agent 智能体开发框架选型指南
  • 基于Zynq FPGA对雷龙SD NAND的测试
  • AOSP沙盒android 11
  • 【JWT】Asp.Net Core中JWT刷新Token解决方案
  • AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
  • stm32不小心把SWD和JTAG都给关了,程序下载不进去,怎么办?
  • 【UE5】在材质中实现球形法线技术,常用于改善植物等表面的渲染效果
  • 【MATLAB源码-第210期】基于matlab的OFDM电力线系统仿真,不同梳状导频间隔对比。三种信道估计,三种插值误码率对比
  • 基于SpringBoot的城镇保障性住房管理策略
  • 支持高性能结构化数据提取的 Embedding 模型——NuExtract-v1.5
  • 【C#】设计一个选购计算机配置的应用程序
  • solo博客源码使用idea编译运行
  • VBA07-方法
  • spring boot 统一异常处理
  • 跟着小土堆学习pytorch(六)——神经网络的基本骨架(nn.model)
  • 数字化落地过程中的研发效能治理如何开展?
  • Windows安装配置node.js
  • Javaweb梳理9——JDBC
  • 逆向CTF入门(如何找main)
  • c语言归并排序
  • 碳化硅陶瓷膜的特性
  • 机器学习(三)——决策树(附核心思想、重要算法、概念(信息熵、基尼指数、剪枝处理)及Python源码)
  • 良心无广,这五款电脑软件堪称必备,最后一个比快播都猛
  • Vue3中实现原生CSS完成圆形按钮点击粒子效果和定点旋转动画
  • 百度网盘 服务器开小差了
  • 数据分析师招聘要求
  • 【C语言】实战-力扣题库:回文链表
  • Centos安装Minio
  • 二叉树的基本概念和底层实现
  • GIF图片格式详解(三)