👩🏻‍💻기초지식/C++

[C++] 상수(const)의 역할과 종류

공대 컴린이 2023. 8. 17. 11:15
728x90

상수(const)

- const 키워드는 변수를 '상수화'시켜준다.
- 그러나 일반적으로 사용하는 진짜 상수(10,20,..) 처럼 변화하는 것이 아니라 문법적으로만 상수화를 시키는 것

포인터

- const int* const p;  (= int const* const p 와 같다)
- 앞 const : 값 자체를 변경불가
- 뒤 const : 주소 자체에 접근된 공간에 대한 변경불가
 
const - 포인터
const int* p; ( int const* p 도 같은 의미)
- const 키워드가 앞에있는 '포인터(*)'를 지칭하여 포인터가 가리키는 원본 변수가 상수화 된 것이다.
- 따라서 포인터가 가리킬 대상을 변경할 순 있지만 원본 변수의 값을 변경할 순 없다.

포인터 - const

- int* const p;

- const 키워드가 앞에있는 '변수(p)'를 지칭하여 변수 자체가 상수화 된 것이다.

- 따라서 포인터가 가리키는 변수의 값을 변경할 수 있지만 포인터가 가리킬 변수를 변경할 순 없다.

 

레퍼런스

- void function(const string& str);
- 레퍼런스로 함수에 매개변수를 전달하면 원본에 대한 포인터만 전달되기 때문에 원본 전체를 복제할 필요가 없다.
- 이때 const 레퍼런스로 전달하면 값이 복제되지도 않고, 원본 변수가 변경되지도 않는 장점을 모두 취할 수 있다.
 

멤버

- const 속성이 있는 변수는 반드시 생성과 동시에 값을 초기화시켜야 한다.
728x90