- 상수를 선언할 수 있도록 도와주는 키워드
- const로 선언된 값은 변경할 수 없다.
- 한번 설정된 값은 read-only memeory에 올라가게 되고 변경할 수 없다.
const int k = 10;
k = 20; // 에러 발생. 값 변경 불가
- 상수만을 가리키는 포인터. 포인터를 이용해서 가리키는 값을 변경할 수 없다.
- 가리키는 대상은 변경이 가능하지만, 가리키는 값은 변경할 수 없다.
int a = 5;
int b = 10;
const int * ptr = &a;
// *ptr = 10; // 에러 발생. 포인터가 가리키는 값 변경 불가
std::cout << *ptr << std::endl; // 5
ptr = &b; // 포인터가 가리키는 대상은 변경 가능
std::cout << *ptr << std::endl; // 10
- 포인터를 상수화 시킨다.
- 포인터가 가리키는 대상은 변경할 수 없고, 가리키는 값은 변경이 가능하다.
int a = 5;
int b = 10;
int * const ptr = &a;
*ptr = 7; // 포인터가 가리키는 값은 변경 가능
std::cout << *ptr << std::endl; // 7
// ptr = &b; // 에러 발생. 포인터가 가리키는 대상 변경 불가
- 포인터가 상수기 때문에 포인터 값을 변경할 수가 없다.
int a = 5;
int b = 11;
const int * const ptr = &a;
// *ptr = 10; // 에러 발생. 포인터가 가리키는 값 변경 불가
// ptr = &b; // 에러 발생. 포인터가 가리키는 대상 변경 불가
- 포인터 ptr가 상수화 되었으며, ptr을 가리키는 대상을 a에서 b로 변경하는것이 불가능하고 현재 포인터가 가리키는 a의 값도 변경할 수 없다.
- 함수 뒤에 const 선언을 하면 함수 내에서는 멤버 변수에 저장된 값을 변경하지 않겠다는 뜻을 가진다.
- const함수 내에서는 const가 아닌 함수의 호출이 제한된다.
void func(int a) const
{
std::cout<<"FUNC"<<std::endl;
}