더북(TheBook)

1.8.4 레퍼런스

다음 코드는 레퍼런스를 소개한다.

int i = 5;
int& j = i;
j = 4;
std::cout << "i = " << i << ‘\n;

변수 ji를 참조한다. 이 예제에서와같이 j를 변경하면 i도 변경되고 반대의 경우도 그렇다. ij는 항상 같은 값을 갖는다. 레퍼런스를 별칭으로 생각할 수 있다. 기존에 있는 개체 또는 하위 개체에 새로운 이름을 도입한다. 레퍼런스를 정의할 때마다 포인터와는 달리 어떤 변수를 참조할 것인지를 직접 선언해야 한다. 나중에 다른 변수를 참조할 수는 없다.

지금까지는 레퍼런스를 유용하게 쓰는 경우가 그다지 많지 않았다. 레퍼런스는 함수 인수(1.5절), 다른 개체의 부분 참조(예를 들어 벡터의 7번째 요소) 및 뷰 구축(예를 들어 5.2.3절)에 매우 유용하다.

C++11 C++11 표준에서는 포인터와 레퍼런스 사이의 절충안으로 레퍼런스와 비슷하게 동작하지만 일부 제한을 피하는 reference_wrapper 클래스를 제공한다. 예를 들어 컨테이너 내에서 사용할 수 있다. 자세한 내용은 4.4.2절을 보라.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.