구로보루 2017. 9. 5. 01:13

 일반적으로 const는 변수 값을 변경하는 것을 막기 위한 상수화 키워드이다.

변수에 const가 쓰여서 상수화 시키는 경우가 많은데 포인터를 사용하게 되면 const의 위치에 따라 의미가 바뀔 수 있다.

 

우선,

 const int a = 10;

을 만들었다고 하면 지금부터 a는 10을 저장하고 있는 변수이다.

 

만약 일반 변수가 아닌 포인터에서 const가 사용된다고 하면

 const int * a;

 int * const a;

이런식으로 나올 수 있다.

먼저 cosnt int * aa가 가르키고 있는 데이터를 변경할 수 없다는 의미이다.

그리고 int * const aa를 상수화 시킨다는 의미로 한번 주소값을 저장하면 계속 그 주소값만 가질 수 있다는 의미가 된다.

 

 

 

 const는 클래스에서 멤버함수를 설정할 때도 사용될 수 있다. 대표적으로

const int func();

int func() const;

가 있다.

여기서도 위치에 따라 의미가 다른데 먼저 const int func()은 상수화 값을 반환한다는 의미이다.

그리고 int func() const는 이 함수를 사용할 때 멤버변수의 값들을 상수화 시킨다는 의미이다.

 

 

 추가로 const 자료형을 반환하는 함수에서 만약 포인터가 아닌 일반 자료형으로 반환하는 경우는 주소값을 통한 초기화가 아닌 값 자체를 복사하는것으로 const가 있으나 없으나 똑같이 작동한다.