当前位置: 首页 > 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.mrgr.cn/news/67659.html

相关文章:

  • urllib3.exceptions.Proxyschemeunknown: Proxy URL had no scheme
  • 【React】JSX规则
  • Redis常见面试题(二)
  • python-读写Excel:openpyxl-(4)下拉选项设置
  • Mybatis和Hibernate
  • LeetCode46. 全排列(2024秋季每日一题 57)
  • 立冬到了,选择Codigger暖心陪伴
  • ElasticSearch:使用dsl语句同时查询出最近2小时、最近1天、最近7天、最近30天的数量
  • glibc 内存分配与释放机制详解
  • 前端关闭控制台打印信息
  • 25源码编译安装软件
  • Android 开发 Java中 list实现 按照时间格式 yyyy-MM-dd HH:mm 顺序
  • 导游职业资格考试真题题库
  • 给应用添加通知和提醒 习题答案 <HarmonyOS第一课>>
  • 基于微信小程序实现个人健康管理系统
  • LVGL UI设计神器助你高效开发嵌入式UI应用——v0.17.0发布(中)
  • Java后台生成指定路径下创建指定名称的文件
  • 为什么说距离视图(RV)表示的紧凑性
  • uniapp radio单选
  • 鸿蒙应用App测试-通用测试
  • 【c知道】Hadoop工作原理。
  • 走进 Go 语言基础语法
  • SAP固定资产报废BAPI_ASSET_RETIREMENT_POST的主要参数说明<转载>
  • 电能管理系统(源码+文档+部署+讲解)
  • 6项!国自然基金委员会拟批准资助项目名单公布!
  • 计算机信息安全