프로그래밍 공부
작성일
2023. 4. 26. 22:14
작성자
WDmil
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