변경 가능한 저장소 클래스 지정자는 멤버가 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 할당을 허용합니다.