예전/C, C++
[C/C++] 레퍼런스
showmiso
2012. 10. 19. 15:39
레퍼런스는 어떤 변수의 별명으로
생성할때 반드시 초기화 해야한다.
레퍼런스 b의 값을 바꿀 수는 있으나 처음 정의한 것 외에 다른 변수를 참조하게 할 순 없다.
두 변수는 같은 주소를 공유하기 때문이다.
예를 들어,
레퍼런스 b의 값을 바꾸는 것은 가능하지만, 가리키는 대상을 바꿀 수는 없다는 것이다.
레퍼런스 앞에 const가 붙었다면,
레퍼런스 b가 상수화 되어 b의 값을 바꾸는 것이 불가능하다. 하지만 a는 상수화 되지 않았으므로 값 변경이 가능하다.
같은 주소를 사용함에도 불구하고 이런 차이가 발생한다.
보통 레퍼런스는 어떤 변수의 별명이기때문에 상수값을 참조 할 수 없다. 상수 값은 값일 뿐 어떤 변수가 아니기 때문이다.
하지만 const가 붙은 레퍼런스는 상수 초기화가 가능하다. 왜냐하면 값을 바꿀리가 없기 때문이다.
이와 비슷하게 const가 붙은 레퍼런스는 또한 타입이 다른 변수로 초기화 될 수 있다.
b에는 c의 값을 int 타입으로 형변환 해서 임시 변수에 넣고, 이 임시 변수를 참조하게 한다.