Mutable
(1)mutable的意思是“可變的,易變的”,跟C++中的const是反義詞。
(2)在C++中,mutable也是為了突破const的限制而設置的。被mutable修飾的變量,將永遠處於可變的狀態,即使在一個const函數中
實例說明:
#include <iostream>
using namespace std;
class TestMutable
{
public:
TestMutable(){i=0;}
int Output() const
{
return i++; //error C2166: l-value specifies const object
}
private:
int i;
};
int main()
{
TestMutable testMutable;
cout<<testMutable.Output()<<endl;
return 0;
}
顯然i++在const修飾的函數里是編譯通不過的。
#include <iostream>
using namespace std;
class TestMutable
{
public:
TestMutable(){i=0;}
int Output() const
{
return i++;
}
private:
mutable int i;
};
int main()
{
TestMutable testMutable;
cout<<testMutable.Output()<<endl;
return 0;
}
在 int i 前面加上 mutable上面就能編譯通過了,馬上可以看出關鍵字mutable的作用了。