(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的作用了。
原文链接:http://www.cnblogs.com/chenyuming507950417/archive/2012/01/05/2313647.html