wn42
코딩이랑 이것저것
wn42
전체 방문자
오늘
어제
  • 분류 전체보기 (113)
    • 프로그래머스 (23)
      • LV1 (11)
      • LV2 (1)
      • LV3 (3)
      • 연습 (8)
    • 딥러닝 공부 (0)
      • 머신러닝&딥러닝 이론 (0)
    • 임베디드 (17)
      • Adventure Design (1)
      • 센서기반모바일로봇 (5)
      • ROS (9)
      • Google Coral (2)
    • C++ (38)
      • C++ 기초 (34)
      • 자료구조 및 알고리즘 (4)
    • Python (14)
      • 기본 파이썬 문법 (6)
      • Python 기초 (8)
    • 빅데이터 (9)
      • 빅데이터 첫걸음 시작하기(국비지원) (5)
      • 빅데이터 공부 (4)
    • 알고리즘 공부 (2)
      • 기본 알고리즘 (2)
    • 전자공학 (10)
      • 반도체 공정 (3)
      • 무선데이터통신 (7)
      • 반도체공학 (0)
    • C# (0)
      • C# 기본 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • c++
  • 노드
  • 조건문
  • stl
  • Python
  • Queue
  • 파이썬
  • 내일배움카드
  • 딥러닝
  • google coral
  • 패스트캠퍼스
  • 클래스
  • 빅데이터 첫걸음 시작하기
  • 정렬
  • 변수
  • numpy
  • 반복문
  • 데이터분석 인강
  • 바이트디그리
  • K디지털크레딧
  • 스택/큐
  • 큐
  • 인스턴스
  • 상속
  • 데이터분석
  • 소멸자
  • 빅데이터
  • 스택
  • ROS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
wn42

코딩이랑 이것저것

C++/C++ 기초

[C++] mutable

2023. 1. 10. 15:30

 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

    'C++/C++ 기초' 카테고리의 다른 글
    • [C++] friend 키워드
    • [C++] 오버로딩 (Overloading) - 2. 연산자
    • [C++] explicit
    • [C++] this 포인터
    wn42
    wn42
    코딩이랑 이것저것 하는 블로그

    티스토리툴바