1.mutable关键字只能够修饰非const和非static数据成员;
2.mutable关键字用于突破const成员函数的限制。
实例如下:
#include <iostream>
#include <iomanip>
using namespace std;
class MutableTest
{
public:
MutableTest() : mFlag(false), mCount(0)
{
}
//该函数只读状态变量mFlag而不写,所以声明为const
//但要获得对象的一些动态状态的话,就需要声明mutable修饰的变量
bool GetFlag() const
{
mCount++;
return mFlag;
}
int GetCount()
{
return mCount;
}
private:
bool mFlag;
mutable int mCount;
};
void main()
{
MutableTest mt;
for (int i = 0; i < 5; i++)
{
mt.GetFlag();
cout << setw(mt.GetCount()) << setfill(' ') << setiosflags(ios::right) << mt.GetCount() << endl;
}
}