(C++) const 개념

일반적으로 const int a=10;을 하게되면
변수 a의 값을 10으로 상수화하겠다는 의미이다.
문제는 포인터를 상수화 시킬 때 헷갈린다.

int a=10;
const int *p=&a;
*p=20(컴파일 에러)

그 이유는 포인터 p는 변수 a의 주소를 가리키지만 직접 포인터를 통해 변수 a의 값을 변경시키지 못하게 막겠다는 의미이다.
대신에
int b=20;
p=&b;를 하게 되면
*P의 값은 20으로 변경된다.


- 포인터 선언할때 이름 앞에 붙어서 포인터 자체를 상수화 한다.(포인터가 가리키는 대상이 고정됨
ex)
int a=10;
int b=20;
int *const pA=&a;
pA=&b;  //컴파일 오류

int a = 10;
int b = 20;
int *const p = &a;
*p = 20;
대신 포인터를 통해 특정 변수의 값을 변경 할 수 있다.


●const 맴베 함수
- 멤버 함수에 const를 선언하면 멤버 함수를 상수화하겠다는 뜻이다.

- 멤버 변수가 상수화되면, 이 함수를 통해서 멤버 변수의 값이 변경되지 않는다.

- 상수화된 멤버 함수는 상수화되지 않은 함수의 호출을 허용하지 않는다.

- 상수화된 멤버 함수는 멤버 변수의 포인터를 리턴하는 것을 허용하지 않는다.


ex)




참고: http://pacs.tistory.com/entry/

댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기