반응형

const

  • Lvalue로 올 수 없는 변수(상수), 주소 또는 역참조값이 Lvalue로 올 수 없는 포인터 변수등 선언할 쓰임
  • 포인터 변수를 선언할때, 자료형 앞 또는 포인터 변수 이름 앞 또는 두위치 모두 "const" keyword 를 붙이면, 각각의 위치에 따라서, 값또는 주소 혹은 둘다, Lvalue로 올 수 없음, 대입 연산자 왼쪽에 올 수 없음
  • 이때 주의해야 될것은, 어떤 특정 변수를 대상으로 하는게 아니라, 자료형, 자료형* 포인터  를 대상으로 하는 것이다, 즉 const int a 가 있다면, int a를 const 로 만든게 아니라, a 가 const int 타입이며, 다른 const 자료형 처럼 Lvalue로 올 수 없는 것이지 값을 수정할 수 없는게 아니다.
  • constexpr과는 다르게, 값이 컴파일타임 뿐만 아니라 런타임에도 값이 정해질 있음, 둘다 허용
    • 선언과 동시 초기화를 하면 컴파일타임(Compile-time)

 

  • 선언  런타임에 초기화를 하면 런타임(Run-time)

 

 

 

const 자료형 변수식별자 = 초기화값;

값   수정   불가능

 

 

const 자료형& 레퍼런스식별자 = 변수;

레퍼런스   변수   역시   동일 ,  값을   수정할   수   없음

 

 

 

 

포인터 변수에 붙일 경우

1. const 자료형 *포인터식별자 = &변수;

자료형 앞에 붙는 경우 역참조값 수정 불가능

 

2. 자료형 * const 포인터식별자 = &변수;

포인터 변수 식별자(이름) 앞에 붙는 경우,역참조값 수정가능, 가리키는 주소 수정 불가능

 

 

 

3. const 자료형 * const 포인터 식별자 = &변수

자료형앞 ,  포인터 변수 식별자(이름)앞, 역참조값, 가리키는 주소,  둘 다 수정 불가능

 

또한 멤버 함수 뒤에 const 붙일경우, 해당 함수는 멤버 변수를 수정할 없다

반응형

+ Recent posts