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的语义保证,应谨慎使用
  • 主要用于实现细节的优化,不应改变对象的可观察状态
  • 在多线程环境下使用时要特别注意线程安全
相关推荐
ShineWinsu1 小时前
对于Linux:模版方法类的解析以及socket、TcpSocket的封装
linux·c++·面试·socket·模板方法模式·封装·tcpsocket
hold?fish:palm2 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
啦啦啦啦啦zzzz3 小时前
算法:回溯算法
c++·算法·leetcode
Lzg_na3 小时前
订阅发布模块事例
c++
攻城狮Soar3 小时前
C++子类访问父类成员
c++·算法
郝学胜-神的一滴4 小时前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计
汉克老师4 小时前
2026年CSP-J初赛分数线-----预测
c++·csp-j·小学生·学c++编程
脱胎换骨-军哥4 小时前
C++数据库存储引擎内核开发:B+树索引与MVCC并发控制的完整实现
数据库·c++·b树
小保CPP4 小时前
OpenCV C++将多张图像合并为webp动图
c++·人工智能·opencv·计算机视觉
乐观勇敢坚强的老彭5 小时前
信奥C++一维数组笔记
开发语言·c++·笔记