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的语义保证,应谨慎使用
  • 主要用于实现细节的优化,不应改变对象的可观察状态
  • 在多线程环境下使用时要特别注意线程安全
相关推荐
我不是懒洋洋5 分钟前
【数据结构】二叉树OJ(单值二叉树、检查两棵树是否相同、对称二叉树、二叉树的前序遍历、另一颗树的子树)
c语言·数据结构·c++·经验分享·算法·leetcode·visual studio
wljy18 分钟前
每日一题(2026.4.29) 猫猫与数学
c语言·c++·算法·蓝桥杯·stl·牛客
FreeGo~8 分钟前
手撕C++】内存管理:感受C++的魅力吧
开发语言·c++
大袁同学29 分钟前
【进程间通信】:洞穿边界修管道,映射内存渡进程
linux·c++·管道·进程间通信·ipc
ximu_polaris29 分钟前
设计模式(C++)-行为型模式-责任链模式
c++·设计模式·责任链模式
Rabitebla1 小时前
【C++】string 类:原理、踩坑与对象语义
linux·c语言·数据结构·c++·算法·github·学习方法
邪修king2 小时前
UE5 零基础入门第四弹:UMG UI 系统入门,从静态界面到逻辑联动
c++·ui·ue5
CN-Dust3 小时前
【C++】输入cin例题专题
java·c++·算法
智者知已应修善业10 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
智者知已应修善业12 小时前
【51单片机按键调节占空比3位数码管显示】2023-8-24
c++·经验分享·笔记·算法·51单片机