분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
int const SIZE = 10;
SIZE = 20
란 구문은 에러를 냅니다. 포인터의 경우는 어떨까요?int size1 = 10;
int size2 = 20;
int* const SIZE_PTR = &size1;
SIZE_PTR = &size2
는 에러를 냅니다. 그런데, *SIZE_PTR = size2
는 허용되는 구문입니다. SIZE_PTR 이 size1 을 가르켜야 된다는 것은 const 로 한정했지만, 그 내용을 바꾸는 것을 한정하지는 않았습니다. 가르키고있는 size1 도 변경이 가능한, 즉 const 로 한정되지 않은 변수입니다.int const SIZE1 = 10;
int const SIZE2 = 20;
const int* size_ptr = &SIZE1;
size_ptr = &SIZE2
는 허용되지만, *size_ptr = SIZE2
는 에러를 냅니다. 한정사 const 가 int* 를 한정하고 있지만 포인터 변수 자체의 변경을 제한하고 있지는 않기 때문입니다. 만일, const int* const SIZE_PTR = &SIZE1
이었다면 모두 금지되었을 것입니다. 이렇게 지역 변수들을 한정하는 것은 의도를 명백하게해서 실수를 방지하는 효과가 있습니다. 조금 관점을 달리하죠.size_t getSize (struct MY* const THIS) { THIS->size = 10; return THIS->size; }
size_t getSize (const struct MY* const THIS) { THIS->size = 10; return THIS->size; }
size_t getSize (const struct MY* const THIS) { return THIS->size; }
size_t MY::getSize (void) const { return this->size; }
죄송합니다. 댓글 작성은 회원만 가능합니다.