728x90
mutable은 C++에서 클래스멤버 변수 중 상수멤버 함수 내에 값이 변경될 수 있는 변수를 나타내는 키워드 이다.
mutable 키워드가 멤버 변수 선언 앞에 붙으면, 이 멤버 변수는 const로 선언되어도, 상수 멤버 함수 내에서 변경될 수 있다.
- 장점
- const 함수 내에서 변경되는 변수를 표현할 수 있다.
- 멤버 변수의 값을 상수 멤버 함수에서 변경해야 하는 경우. 매우 쉬운 해결책으로 사용할 수 있다.
- 단점
- mutable을 남용하면 코드의 가독성을 떨어뜨릴 수 있다. 객체의 상태를 변경하는 변수를 나타냄으로, 과도한 사용은 코드를 난잡하게 만들기 때문.
다음은 mutalbe을 사용한 예시이다.
다음과 같이 선언된것의 , private으로 선언된 부분인 mutable int mutable_variable은, 변경될 수 있음을 나타낸다.
물론, private에 있는 변수는 초기화가 이루어져야 하기 때문에, 사용 전 set을 사용하던지 아니면 선언시 동작하는 생성자로 초기화를 해주던지 해야한다.
어떨때 선언되는가?
- 멤버 변수의 값이 상수멤버 함수 내에서 변경되어야 할 경우 사용할 수 있다. 예를들면 5개의 변수가 선언되나, 4개의 변수만 절대 변경되면 안되고, 1개의 변수만 변경되어야 하는 경우에 해당 Class가 const로 선언되었을 떄. mutable int 를 사용함 으로써. 해결할 수 있다.
- 그러나, 멤버변수의 값을 변경하는것 은 코드의 복잡성을 높이고. 오류의 가능성을 키울 수 있기 때문에, mutable 의 남용은 좋지 않다는 것을 기억하자.
private에 있는 변수는 private에 있는 이유가 있다고 생각해야한다!
728x90
'컴퓨터 용어 정리' 카테고리의 다른 글
디자인 패턴(Design Pattern) (0) | 2023.04.28 |
---|---|
객체지향 설계원칙(SOLID) (0) | 2023.04.28 |
C++ Inline (0) | 2023.04.26 |
C++ 생성자(constructor) (0) | 2023.04.22 |
C++ class (0) | 2023.04.22 |