
有时候,在常量const
的成员函数中,由于const
意味着其中的常量指针this
指向一个常量对象,由此而导致了在该成员函数中,无法修改类中的数据成员,此时在类的数据成员之前加关键词mutable
修饰则可以使得该数据成员在任何时候都可以改变。 例如C++ primer 5th中P245页的代码所示 1
2
3
4
5
6
7
8
9
10class Screen {
public:
void some_member() const; //指向常量对象的常量指针
private:
mutable size_t access_ctr;// mutable关键词修饰,在任何时候都可以实现可以被改变
//other variables
};
void Screen::some_member() const{
++access+ctr; //虽然是const,但由于mutable的存在,依旧可以被改变
}