본문 바로가기

공부/c++

const속성을 가진 레퍼런스 변수

반응형

일반 특징

int b = 1;

const int& a = b;

 

const속성 때문에 a를 이용해서 b에 저장된 내용을 바꿀 수 없음

 

추가 특징

1. const 속성을 가진 레퍼런스는 추가적인 특징을 갖게 되는데, 상수에 대한 별명으로 쓰일 수 있다는 점이다.

const int& rci = 100;//성공

int& ri = 100;//실패

레퍼런스는 변수를 참조하게 만들어졌기 때문에 상수를 바로 참조할 수 없다. 그래서 이 경우에는 그 상수 값을 갖는 임시 변수(객체)를 하나 만든 후에 레퍼런스가 이 임시 변수(객체)를 참조하게 만든다. 이 예제의 경우에는 100값을 갖는 임시 변수를 만든 후에 rci가 그 변수를 참조하게 한다.

문제는 이 임시 변수의 값을 변경하는 것이 문제를 유발하기 쉽다는 점이다. 그래서 const 속성을 가진 레퍼런스만 상수를 참조할 수 있게 허용한다. 그 경우에는 임시 변수의 값을 바꿀 수 없기 때문이다.

 

2. 비슷한 원리로 const 속성을 가진 레퍼런스는 다른 타입의 변수를 참조할 수 있다.

char c = 'A';

const int& rci = c;//성공

int& ri = c;//실패

이 경우에도 int 타입의 rci가 char 타입의 변수 c를 바로 가리킬 수 없기 때문에 컴퓨터는 int 타입의 임시변수를 만든다. 그리고는 c의 값을 int 타입으로 형변환해서 이 임시 변수에 넣고, rci가 이 임시변수를 참조하게 만든다.

 

const 속성을 가진 레퍼런스 변수의 소멸 시기 : 선언된 함수를 빠져 나갈 때

반응형