mutable
const 함수(읽기만 가능)에서도 멤버 변수의 값을 변경할 수 있게 하는 키워드이다.
const 함수가 무엇인지 모르겠다면 아래 참고
[C++] 클래스에서 static 이용하기 (+ const)
Static 이용하기 Static 변수 static 변수는 한번 생성되면 객체가 종료될 때가 아닌, 프로그램이 종료될 때 소멸되므로 이를 생성된 객체의 개수를 세는데 활용할 수 있다. 클래스 내부에서 static 변
wn42.tistory.com
mutable 키워드 이용하기
- 멤버 변수의 mutable 선언은 다음과 같다.
mutable int x;
const 함수로 mutable 멤버 변수 값 바꾸기
#include <iostream>
using namespace std;
class Ex {
private:
mutable int x; // 변수 mutable 선언
public:
void changeNum(int num) const; // const 함수
void printNum();
Ex(int n);
~Ex();
};
Ex::Ex(int n) {
x = n;
}
Ex::~Ex() {
};
void Ex::changeNum(int num) const {
x = num;
}
void Ex::printNum() {
cout << "x는 " << x << "입니다. " << endl;
}
int main() {
Ex ex(5);
ex.printNum();
ex.changeNum(10); // 5 -> 10 값 변경
ex.printNum();
return 0;
}
x는 5입니다.
x는 10입니다.
- 멤버 변수를 mutable 키워드를 이용하여 선언하면, const 함수로도 값을 변경할 수 있다.
- 만약 mutable 키워드를 사용하지 않고 값을 변경하면 다음과 같은 오류가 발생한다.
mutable을 왜 사용하는지
- mutable은 매우 예외적인 상황에서만 사용되는 키워드이다.
- mutable을 이용하면서까지 멤버 변수 값을 바꿀거면, const 키워드를 없애면 되는 것 아니냐고 생각할 수 있다.
- 일단! 키워드의 중요성은 mutable보다 const가 더 크다고 알아두자. ▶ const는 고려하지 않은 외부 참조에 의한 값 변경을 막을 수 있는 아주 좋은 키워드이다. const로 상수성을 부여함으로써 코드의 안정성을 높일 수 있다.
- 다만, 상황에 따라 읽기만을 하도록 정의한 함수에서 값 변경이 필요한 경우가 있다. 그러한 예는 다음 사이트들에서 잘 정리되어 있으니 참고하자.
혼자 연구하는 C/C++ by WinApi
27-4-다.mutable mutable은 C++에 새로 추가된 키워드인데 영어 뜻 그대로 번역하면 변덕스럽다는 뜻이다. 상수의 반대 의미로 사용되며 "수정 가능" 정도로 이해하면 된다. mutable로 지정된 멤버는 상수
www.soen.kr
씹어먹는 C ++ - <4 - 6. 클래스의 explicit 과 mutable 키워드>
modoocode.com