可变存储类说明符仅用于类数据成员,以使其可修改,即使该成员是声明为const的对象的一部分也是如此。您不能将可变说明符与声明为static或const或引用成员的名称一起使用。
在以下示例中-
class A { public: A() : x(4), y(5) { }; mutable int x; int y; }; int main(){ const A var2; var2.x = 345; //var2.y = 2345; }
编译器不允许分配var2.y = 2345,因为var2已声明为const。编译器将允许赋值var2.x = 345,因为A::x已被声明为可变的。