언어/Basic C++
[Basic C++] #26_const 포인터, const 참조
Hardii2
2022. 5. 15. 19:11
[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 키워드 사용이 편리할것입니다.