C++: mutable 關鍵字

C++: mutable 關鍵字

C++ 中的 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_ mutable std::string last_value_;};

const成員函數是不允許修改數據成員的。但是,另一方面,last_key_last_value_從邏輯上說,修改它們的值,外部是無有感知的;因此也就不會破壞邏輯上的const。為了解決這一矛盾,我們用mutable來修飾last_key_last_value_,以便在lookup函數中更新緩存的鍵值。


推薦閱讀:

季逸超與他的 Peak Labs 和 Magi 搜索引擎怎麼樣了(2018年)?
作為一個媒體人,如何把自己每天接收到的信息過濾處理保留並轉化到自己的知識系統裡面?
elasticsearch的實時搜索性能為什麼比solr好?
為什麼搜索引擎跟國家安全有關?
[Paper Reading] 基於文檔主題結構的關鍵詞抽取方法研究

TAG:搜索引擎 | 搜索引擎優化SEO | 數學 |