C++/기억하고 싶은 거
[C++] const에 대한 참조자와 포인터
KANTAM
2023. 5. 17. 15:51
const
에 대한 참조자
const
에 대한 참조자는 const
인 객체나 contst
가 아닌 객체, 상수와 결합할 수 있다.
그러나 일반적인 참조자는 const
가 아닌 객체와 결합할 수 있으나 const
인 객체와는 결합할 수 없다.
int i = 42;
const int &r1 = i; // const int&를 보통의 int 객체에 결합할 수 있다.
const int &r2 = 42; // 좋음: r2는 const에 대한 참조자이다.
const int &r3 = r1 * 2; // 좋음: r3는 const에 대한 참조자이다.
int &r4 = r1; // 오류: r4는 const가 아닌 보통의 참조자이다.
const
에 대한 포인터
const
에 대한 포인터 역시 참조자와 마찬가지로 const
에 대한 포인터는 const
인 객체나 const
가 아닌 객체를 가리킬 수 있다.
그러나 일반적인 포인터는 const
가 아닌 객체,를 가리킬 수 있으나 const
인 객체는 가리킬 수 없다.
const double pi = 3.14; // pi는 const이므로 값을 변경할 수 없다.
double *ptr = π // 오류: ptr은 보통의 포인터이다.
const double *cptr = π // 좋음: cptr은 const인 double을 가리킬 수 있다.
*cptr = 42; // 오류: *cptr에 대입할 수 없다.