mutable关键字是用来指定可变数据成员的。有时希望类的数据成员可以修改,即便是在const成员函数内。用mutable修饰的数据成员永远都不能const,甚至当它是const对象的成员时也是如此。
#include <iostream>
using namespace std;
struct data
{
int value1;
mutable int value2;
};
int main()
{
const data val = {1, 2};
val.value1 = 3; //error, data::value1 read-only
val.value2 = 4;
cout<<val.value1<<endl
<<val.value2<<endl;
return 0;
}
#include <iostream>
using namespace std;
class Student
{
public:
Student(char *na, int ag) : name(na), age(ag)
{}
void Print() const
{
age = age + 1;
name = "Han"; //error Student::name read-only
cout<<"name:"<<name<<endl
<<"age = "<<age<<endl;
}
private:
char *name;
mutable int age;
};
int main()
{
Student stu("David", 20);
stu.Print();
return 0;
}