C++中的mutable关键字如何使用

在C++中,mutable关键字用于修饰类的数据成员,表示即使在const成员函数中也可以修改该成员变量。

具体含义:

  1. 常规规则 :在const成员函数中,不能修改类的任何成员变量
  2. mutable例外 :被mutable修饰的成员变量可以在const成员函数中被修改

常见使用场景:

cpp 复制代码
class MyClass {
public:
    void someMethod() const {  // const成员函数
        _observerSet = ...;    // 这里可以修改,因为是mutable的
        _otherVar = ...;       // ❌ 错误:不能修改非mutable成员
    }
    
private:
    mutable OpenThreads::AtomicPtr _observerSet;  // 可以被const函数修改
    int _otherVar;                                 // 不能被const函数修改
};

注意事项:

  • mutable打破了const的语义保证,应谨慎使用
  • 主要用于实现细节的优化,不应改变对象的可观察状态
  • 在多线程环境下使用时要特别注意线程安全
相关推荐
不想写代码的星星23 分钟前
C++ 内存管理:分区、自定义分配器、常见问题与检测工具
c++
-许平安-1 小时前
MCP项目笔记九(插件 bacio-quote)
c++·笔记·ai·plugin·mcp
沉鱼.441 小时前
第十三届题目
c语言·c++·算法
liulilittle1 小时前
C++ 无锁编程:单停多发送场景高性能方案
服务器·开发语言·c++·高性能·无锁·原子
无限进步_2 小时前
【C++】巧用静态变量与构造函数:一种非常规的求和实现
开发语言·c++·git·算法·leetcode·github·visual studio
小超超爱学习99372 小时前
大数乘法,超级简单模板
开发语言·c++·算法
xyx-3v3 小时前
qt创建新工程
开发语言·c++·qt
样例过了就是过了4 小时前
LeetCode热题100 爬楼梯
c++·算法·leetcode·动态规划
少司府4 小时前
C++基础入门:类和对象(中)
c语言·开发语言·c++·类和对象·运算符重载·默认成员函数
王老师青少年编程4 小时前
csp信奥赛c++之状压枚举
数据结构·c++·算法·csp·信奥赛·csp-s·状压枚举