C++中mutable关键字学习
转自:https://liam.page/2017/05/25/the-mutable-keyword-in-Cxx/,讲的很好。
1.介绍
mutable即可变的,mutable只能用来修饰类的数据成员;而被 mutable 修饰的数据成员,可以在 const 成员函数中修改。
例子:
class HashTable { public: //... std::string lookup(const std::string& key) const { if (key == last_key_) { return last_value_; } std::string value{this->lookupInternal(key)}; last_key_ = key; last_value_ = value; return value; } private: mutable std::string last_key_;//用于缓存最近被查询的key和值 mutable std::string last_value_;//在const函数中可更新。 };
在匿名函数中可以:
定义f2的行会报错: error: cannot assign to a variable captured by copy in a non-mutable lambda