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
'👩🏻💻기초지식 > C++' 카테고리의 다른 글
[C++] 구조체 특성, 패딩이란? 공용체란? (0) | 2023.08.17 |
---|---|
[C++] 매크로 변수의 문제점은? (0) | 2023.08.17 |
[C++] auto 키워드 (0) | 2023.08.17 |
[C++] Call By Value/Address/Reference (0) | 2023.08.17 |
[C++] 메모리 구조 (0) | 2023.08.17 |