C++-mutable关键词

简介

mutable 的中文意思是“可变的,易变的”,跟constant(即C++中的const)是反义词

mutable变量

要求

mutable 容许在即便包含它的对象被声明为 const 时仍可修改声明为 mutable

详解

mutable 可出现于非引用非 const 类型的非静态数据成员的声明中:

1
2
3
4
5
class A
{
mutable const int* num; // OK
mutable int* const len; // error!
};

mutable 所声明变量可在 const 修饰的类成员函数中修改

1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
public:
int GetNum() const
{
++num;
++len; //error!
return num;
}
private:
int len;
mutable int num;
};