1. 변수 const : 변수 값을 변경하지 못하게 한다.
const int n = 5;
n = 10 // 에러
1-2 const int& n2 = n; : n2가 참조하는 곳의 값을 바꿀 수 없다.
int n = 5;
const int& n2 = n;
n2 = 10; //에러
n = 10 ; //가능.
2. 포인터 변수 const : 포인터가 가르키는 곳의 값을 변경하지 못하게 한다.
int n = 5;
const int* ap = &n; (int const* ap도 똑같다.)
*ap = 10; //에러
int n2 = 10;
ap = &n2; //가능함. 포인터 변경은 가능
int * ap2 = ap; //에러. 포인터가 가르키는 곳을 다른 포인터가 값을 변경할 수도 있기 때문에, 허용하지 않는다.
const int *ap2 = ap; //가능함
2-1. int* const ap = &n;
이 경우는 포인터가 가르키는 곳의 값은 변경가능하나, 포인터에 저장된 주소는 변경할 수 없다.
*ap = 10; //가능함
ap = &n2; //에러
3. 클래서 멤버 함수 const : 해당 객체의 멤버 필드들의 값을 함수 내에서 변경하지 못한다.
(물론 필드에 mutable 키워드를 사용하면 변경 가능하다.)
class A{
int n = 5;
void abc() const{
n = 10//에러
}
}
4. const 객체는 const멤버 함수가 아닌 것을 호출 할 수 없다.
class B{
void toString(){
cout<< "call B to string" << endl;
}
}
int main(){
const B b;
b.toString; //에러
}
'게임을 만들자 > C++' 카테고리의 다른 글
c++11 min, max 범위, 난수 생성 (1) | 2020.04.07 |
---|---|
c++ string tokenizer (0) | 2015.01.09 |
cJSON parsing error using window utf-8 txt file, Remove UTF-8 BOM (0) | 2015.01.08 |
c++ Easing code (0) | 2014.10.16 |
c++ Builder 패턴 (0) | 2014.04.16 |