BLOG ARTICLE const | 1 ARTICLE FOUND

  1. 2014.04.15 c++ const

c++ const

C++ 2014.04.15 13:41


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++ 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
c++ const  (0) 2014.04.15