mutable關鍵字詳解與實戰
在C++中mutable關鍵字是為了突破const關鍵字的限制,被mutable關鍵字修飾的成員變量永遠處于可變的狀態,即使是在被const修飾的成員函數中。
在C++中被const修飾的成員函數無法修改類的成員變量,成員變量在該函數中處于只讀狀態。然而,在某些場合我們還是需要在const成員函數中修改成員變量的值,被修改的成員變量與類本身并無多大關系,也許你會說,去掉函數的const關鍵字就行了。可問題是,我只想修改某個變量的值,其他變量希望仍然被const關鍵字保護。
現在有個場景,我們想獲取函數被調用的次數,代碼如下:
class Widget{ public: Widget(); ~Widget() = default; int getValue() const; int getCount() const; private: int value; int count; };
這里我們想要獲取getValue函數被調用次數,普遍的做法是在getValue函數里對成員變量count進行加1處理,可是getValue被關鍵字const修飾啊,無法修改count的值。這個時候mutable派上用場了!我們用mutable關鍵字修飾count,完整代碼如下:
#include 《iostream》 class Widget{ public: Widget(); ~Widget() = default; int getValue() const; int getCount() const; private: int value; mutable int count; }; Widget::Widget() : value(1), count(0) { } int Widget::getValue() const{ count++; return value; } int Widget::getCount() const{ return count; } int main() { Widget w1; for(int i = 0; i 《 5; i++){ w1.getValue(); } std::cout 《《 w1.getCount() 《《 std::endl; return 0; }
被mutable修飾的成員變量count在getValue函數里進行加1計數,編譯運行輸出如下:
5
既保護了其他成員變量,又能達到我們單獨修改成員變量count值的目的。
責任編輯:haq
原文標題:C++ mutable關鍵字如何使用?
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
C語言關鍵字分別發生在哪個階段
C++新手容易犯的十個編程錯誤
ostream在c++中的用法
inline關鍵字被優化導致此類函數被布局在flash內,怎么處理?
鴻蒙OS開發實例:【Native C++】

使用 MISRA C++:2023? 避免基于范圍的 for 循環中的錯誤

評論