프로그래밍 언어/C & C++ 정리

함수 뒤에 const? 너 누군데

게임 개발 2024. 9. 25. 03:51

 

 

멤버 함수 뒤에 const를 붙이면

const 키워드로 멤버 함수를 선언하면 함수가

자신이 호출되는 개체를 수정하지 않는 "읽기 전용" 함수로 지정하는 것이다.

 

const 객체들은 const 맴버함수만 호출할수 있다.

그렇다고 일반 객체는 const가 뒤에 있는 맴버함수도 가능하지 않다는 것은 아니다.

 int getMonth() const;     // A read-only function

 


그럼 앞에 쓰면?

반환값을 상수화 하는 것이다.

const int A(); // 반환값을 상수화한다.

 

주로 참조값으로 반환이기 때문에 const를 붙여줘야 할 때 쓰인다.

 

 

그럼 매개변수에 const는?

매개변수를 call by reference일때 즉 참조값으로 받을때 사용한다.

속도는 높이고 싶은데 참조값을 변경하기 싫을때 많이 사용된다.

 

 

그럼 const 포인터, 포인터 const는?

 

(const) 자료형 (const) * 변수명 = 포인터가 가르키는 변수를 상수화

즉, 해당 const 포인터는 주소를 바꿔서 가리킬 수 있지만,

해당 포인터를 이용해 주소를 가리키는 값은 변경할 수 없다.

 

위 예제를 보고

왜 const를 두 번 쓰세요? 싶을 수 있는데

그냥 포인터 앞이냐 뒤냐가 중요한 거지 자료형 앞이냐는 사실 상관없음을 강조하고 싶어서다.

 

자료형 * const 변수명 = 포인터 가지고 있는 주소는 바꿀 수 없다. 

하지만 주소 내부에 있는 값은 변경 가능하다.

 

즉 가리키는 변수는 상수가 아니므로 포인터를 역참조하여 값을 변경하는 것은 가능하다.

 

출저 

https://learn.microsoft.com/ko-kr/cpp/cpp/const-cpp?view=msvc-170

 

const (C++)

자세히 알아보기: const(C++)

learn.microsoft.com

출저

https://chogyujin-study.tistory.com/96

'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글

* const 와 reference  (0) 2024.09.27
C++ 람다 식  (1) 2024.09.15
C++ 기억 존속 시간, 사용 범위  (0) 2024.08.01
템플릿  (0) 2024.07.31
파일 복사 프로그램  (0) 2024.07.09