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的语义保证,应谨慎使用
  • 主要用于实现细节的优化,不应改变对象的可观察状态
  • 在多线程环境下使用时要特别注意线程安全
相关推荐
米优12 分钟前
C/C++中实现自定义自动释放堆内存空间类
c语言·开发语言·c++
Hncj202216 分钟前
项目02--JsonRpc
linux·c++·ubuntu·rpc
挖矿大亨37 分钟前
C++中的引用
开发语言·c++
Larry_Yanan1 小时前
Qt多进程(四)QTcpSocket
开发语言·c++·qt·ui
superman超哥1 小时前
仓颉内存管理深度探索:引用计数的实现原理与实战
c语言·开发语言·c++·python·仓颉
TechPioneer_lp2 小时前
27届暑期实习内推:网易美团京东快手等
数据结构·c++·人工智能·笔记·机器学习·面试
小无名呀2 小时前
RAII 智能指针
c++
Once_day2 小时前
CC++八股文之基础语法(2)
c语言·c++
dawnButterfly2 小时前
C 语言标准、编译器与操作系统的关系
c语言·开发语言·c++
程序员龙一2 小时前
进程、线程、协程通俗讲解与对比
c++·线程·进程·协程