C 中的mutable關鍵字

2021-10-04 09:03:35 字數 1385 閱讀 5079

mutalbe的中文意思是「可變的,易變的」,跟c++中的const是反義詞

在c++中,mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在乙個const函式中

我們知道,被const關鍵字修飾的函式的乙個重要作用就是為了能夠保護類中的成員變數。即:該函式可以使用類中的所有成員變數,但是不能修改他們的值。然而,在某些特殊情況下,我們還是需要在const函式中修改類的某些成員變數,因為要修改的成員變數與類本身並無多少關係,即使修改了也不會對類造成多少影響。當然,你可以說,你可以去掉該函式的const關鍵字呀!但問題是,我只想修改某個成員變數,其餘成員變數仍然希望被const保護。

經典的應用場景比如說:我要測試乙個方法的被呼叫次數。

class person 

;

最普遍的作法就是在getage()的方法體內對m_nums這個變數進行加+1,但是getage()方法又是const方法,無法修改m_nums這個變數,我又不想去掉const關鍵字讓別人能夠修改age等成員變數,這個時候mutable關鍵字就派上用場了:

#include

class person

;person:

:person()

person::~

person()

int person:

:getage()

const

int person:

:getcallingtimes()

const

intmain()

std:

:cout <<

"getage()方法被呼叫了"

<< person->

getcallingtimes()

<<

"次"<< std:

:endl;

delete person;

getchar()

;return0;

}

執行結果:

calling the method

calling the method

calling the method

calling the method

calling the method

calling the method

calling the method

calling the method

calling the method

calling the method

getage()方法被呼叫了10次

這樣我們既保護了別的成員變數,又能夠使計數器的值進行累加。

需要注意的是:mutable不能修飾const 和 static 型別的變數。

c 中mutable關鍵字

mutalbe的中文意思是 可變的,易變的 跟constant 既c 中的const 是反義詞。在c 中,mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在乙個const函式中。我們知道,如果類的成員函式不會改變物件的狀態,那麼這個成員函式一...

C 中關鍵字mutable

c 中的關鍵字mutable翻譯出來是 易變的。其可以看做是const的反義詞,作用也是反向於const的。當用const修飾類物件時 常物件 代表著其值是不能修改的。但我們也許會在某些時刻需要一種可以在常物件內可修改的變數。這時我們就需要了關鍵字mutable。型如 mutable 變數型別 變數...

C 中的mutable關鍵字

mutalbe的中文意思是 可變的,易變的 跟constant 既c 中的const 是反義詞。在c 中,mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在乙個const函式中。我們知道,如果類的成員函式不會改變物件的狀態,那麼這個成員函式一...