본문 바로가기

C++ Language/Tip / Information

const_cast 키워드

const_cast 키워드는 간단하게 말해서 상수화 되어 있는 변수를
상수화를 없애는 것입니다.

즉, 밑의 소스를 보게 되면,


상수화 되어 있는 변수에 값을 입력 할려고 하니

error C2166 : l-value specifies const object

라는 에러 메세지가 뜨게 됩니다.

즉, 왜 상수값을 바꿀려고 하느냐라는 에러 메세지를 출력 합니다.

하지만 밑의 소스를 보게 되면

const_cast 라는 키워드를 사용함으로써,
에러 없이 상수에 값을 넣을 수 있게 됩니다.

그리고 다른 예를 보게 되면,

이렇게 const int* pvalue = new int;
로 const를 주게 되면
포인터 변수인 pvalue가 가르키는 변수의 값을 상수화 시켜
수정을 못하도록 하는 것입니다.
그래서 위 소스 처럼 변경을 할려고 하면
에러가 뜨게 됩니다.

그래서 이럴때도

이런식으로 const_cast을 사용하여 일반변수화 시켜서 값을 변경 할 수 있습니다.

그리고 상수함수에서 사용을 보게 되면,


상수 함수 안에서는 값을 변경 시킬 수도 없으며,
상수함수이외의 일반 함수도 호출 할 수 없습니다.

위 예에서는 상수함수에 임의적으로 값을 변경 하여, 에러를 유발 하였는데,
이렇게 값을 변경 시켜 주고 싶을 경우에도,


이런 식으로 const_cast를 사용하여,
값을 변경 시킬 수 있습니다.

이 외에도 여러 예들이 있는데, 그 예들을 직접 연습을 하면서,

터득을 하는 것도 좋은 방법 같습니다.

궁금 한 점이 있으시면, 댓글 남겨 주세요~ ^^

'C++ Language > Tip / Information' 카테고리의 다른 글

클래스에서의 초기화(initialization)와 대입(assignment)  (0) 2010.02.16
8진수 / 10진수 / 16진수 출력하기  (0) 2010.02.16
mutable 키워드  (0) 2010.02.12
상수함수란?!  (0) 2010.02.12
explicit 키워드  (0) 2010.02.10