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] 基於文檔主題結構的關鍵詞抽取方法研究