접근 지정자 const는 정리하면 다음과 같습니다.
1. const는 자신의 오른쪽 것에 적용된다.
2. 오른쪽에 적용대상이 없으면 왼쪽에 적요안다. 여기서 말하는 적용대상이란 * 또는 형 (type)이다.
const char* str;
const char* str; 이라고 선언하면 str=str+1; 등 str은 변경할 수 있으나 *str은 변경할 수 없음. 즉, const 포인터가 아니라 const char 임.
char* const str;
char* const str="abcd"; 하믄 위와 반대로 됨.
const char* const str = "abcd"; 하면 str, *str 둘 모두 const가 되어 변경할 수 없음.
이들을 쉽게 구분하려면 아래와 같이 합니다.
함수의 반환형과 배개변수에서도 위의 내용이 동일하게 적용됩니다.
예)
가끔 const char* 을 const 포인터이자 char인 것으로 오해하는 경우가 있습니다. const포인터가 아닙니다.
int StrLen(const char* str)
{
const char* p = str;
while(*p) p++; //이 곳의 p++을 못하는 것으로 오해하지 말아야.
return (p-str);
}
'컴퓨터 > C++' 카테고리의 다른 글
[Linux] 파일 찾기 명령어 find (0) | 2014.04.14 |
---|---|
[C++] 표준 입력 함수 cin, cin.get(), cin.getline() (1) | 2013.08.21 |
(Visual C++) (C++.NET) ( Managed C++) (C++/CLI) 의 차이점 (0) | 2013.06.07 |
[C++] C++의 형변환 const_cast, static_cast, reinterpret_cast, dynamic_cast (0) | 2013.02.20 |
[정렬][C++] Template를 이용한 Swap 함수 (0) | 2013.01.30 |