-
mutable是什么?
- mutable的中文译为 “可变的,易变的”,是constant(即C++中的const)的反义词。
- C++中为了突破 const 的限制而采用的,被 mutable 修饰的变量将永远处于可变的状态。
-
为什么要用mutable?
- 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被 mutable 来修饰。
- mutable 常用于指定不影响类的外部可观察状态的成员(通常用于互斥体[mutexes]、记忆缓存[memo caches]、惰性求值[lazy evaluation]和访问指令[access instrumentation]等)。
class ThreadsafeCounter { mutable std::mutex m; // mutable 和 mutex 用在一起情况 int data = 0; public: int get() const { std::lock_guard<std::mutex> lk(m); return data; } void inc() { std::lock_guard<std::mutex> lk(m); ++data; } };
-
使用mutable的注意事项
- mutable只能作用于类的非静态和非常量数据成员。mutable不能修饰static数据成员,因为static数据成员存储在Data段或BSS段,属于类ÿ
C++中mutable关键字
最新推荐文章于 2024-04-17 19:44:01 发布