const_cast 키워드는 간단하게 말해서 상수화 되어 있는 변수를
상수화를 없애는 것입니다.
즉, 밑의 소스를 보게 되면,
상수화 되어 있는 변수에 값을 입력 할려고 하니
error C2166 : l-value specifies const object
라는 에러 메세지가 뜨게 됩니다.
즉, 왜 상수값을 바꿀려고 하느냐라는 에러 메세지를 출력 합니다.
하지만 밑의 소스를 보게 되면
const_cast 라는 키워드를 사용함으로써,
에러 없이 상수에 값을 넣을 수 있게 됩니다.
그리고 다른 예를 보게 되면,
이렇게 const int* pvalue = new int;
로 const를 주게 되면
포인터 변수인 pvalue가 가르키는 변수의 값을 상수화 시켜
수정을 못하도록 하는 것입니다.
그래서 위 소스 처럼 변경을 할려고 하면
에러가 뜨게 됩니다.
그래서 이럴때도
이런식으로 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 |