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的语义保证,应谨慎使用
  • 主要用于实现细节的优化,不应改变对象的可观察状态
  • 在多线程环境下使用时要特别注意线程安全
相关推荐
黑客思维者1 小时前
智能配电系统用户敏感数据脱敏详细设计:从静态遮盖到动态策略
c++·python·嵌入式系统·数据脱敏·智能配电系统
GoWjw1 小时前
内存管理【3】
linux·服务器·c++·ubuntu
liulilittle2 小时前
C++ 并发双阶段队列设计原理与实现
linux·开发语言·c++·windows·算法·线程·并发
森G2 小时前
五、Linux字符设备驱动
linux·arm开发·c++·ubuntu
繁星蓝雨3 小时前
我与C++的故事(杂谈)
开发语言·c++
Queenie_Charlie3 小时前
和为k的连续区间
数据结构·c++·map
white-persist4 小时前
【攻防世界】reverse | Mysterious 详细题解 WP
c语言·开发语言·网络·汇编·c++·python·安全
赖small强4 小时前
【Linux C/C++ 开发】 GCC 编译过程深度解析指南
linux·c语言·c++·预处理·链接·编译·编译过程
BestOrNothing_20154 小时前
C++ 并发四件套:并发编程 / 原子性 / 数据竞争 / 内存模型 (全解析)
c++·多线程·并发编程·线程安全·内存模型·原子操作·数据竞争