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的作用了。