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

posted @ 2023-10-01 21:00  lypbendlf  阅读(19)  评论(0编辑  收藏  举报