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에 대입할 수 없다.