[Basic C++] #26_const 포인터, const 참조
C++ 개발에서 까다로운 문법 혹은 특별한 의미를 갖는 부분에 대해 알아보겠습니다.
"전문가를 위한 C"의 10 항목, "C++의 까다롭고 유별난 부분들"에 해당하는 내용입니다.
Overview
- 개념
- 코드
#0. 개념
1. const
const double PI = 3.141592;
PI = 3.14 // 컴파일 오류
Details
- "const" 키워드는 상수 값을 갖는변수의 선언에 사용됩니다.
- 따라서, 위 코드처럼 변수 값의 변경을 시도하면 컴파일 에러를 발생시킵니다.
#1. 코드
1. const 포인터 예제
// 1. 포인터가 가리키는 데이터의 변경 방지
const int* ptr; // == int const* ptr;
ptr = new int[10];
ptr[4] = 5; // 컴파일 에러!!
// 2. 포인터 자체의 변경 방지
int* const ptr = nullptr;
ptr = new int[10]; // 오류!!!!
// 3. 둘 다 방지
const int* const ptr = nullptr;
Details
- const 포인터의 경우, 포인터가 가리키는 데이터 값의 변경을 방지하기 위한 "const" 사용과 포인터 자체의 변경을 방지하기 위한 "const" 사용이 있습니다.
- 물론, 두 가지 경우를 모두 적용하는 것 또한 가능합니다.
- 미리 작성된 코드를 분석하는 경우, 해석이 헷갈릴 공산이 있습니다.
- 따라서, const 포인터가 사용된 코드를 읽을 경우 혹은 작성할 경우 오른쪽에서 왼쪽으로 읽으며 해석하면
- 포인터와 const 키워드 사용이 편리할것입니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #29_typedef (0) | 2022.05.22 |
---|---|
[Basic C++] #27_상수 표현식, constexpr (0) | 2022.05.21 |
[Basic C++] #25_우측 값 참조, 이동 시맨틱 (0) | 2022.05.14 |
[Basic C++] #24_우측 값 참조, 대입 연산의 좌항과 우항 (0) | 2022.05.14 |
[Basic C++] #23_참조형 파라미터, 참조에의한 전달 (0) | 2022.05.08 |