변경 가능한 저장소 클래스 지정자는 멤버가 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가 const로 선언되었기 때문에 var2.y =2345 할당을 허용하지 않습니다. 컴파일러는 A::x가 변경 가능한 것으로 선언되었기 때문에 var2.x =345 할당을 허용합니다.