레퍼런스
개념
- 특정 변수의 실제 이름 대신 사용할 수 있는 별명
사용 방법
1
2
int x = 10;
int& ref_x = x; // ref_x는 x의 참조자이다
특징
- 크기가 큰 데이터를 인수로 전달할 경우에 유용하다.
- 참조자를 리턴하는 것은 주소값만 복사하면 되기 때문에 값을 리턴하는 것에 비해 효율적임.
- 참조자의 배열은 존재할 수 없다.
- 메모리 상에 공간을 차지할 수 없기 때문.
1 2
int a, b; int& arr[2] = {a, b};
배열의 레퍼런스는 존재할 수 있다.
1 2
int arr[3] = {1, 2, 3}; int(&ref)[3] = arr;
주의 사항
- 참조자 정의 시에 반드시 누구의 참조자인지를 명시해야 한다.
- 한 번 어떤 변수의 참조자가 되면, 이 더 이상 다른 변수를 참조할 수 없게 된다.
- 댕글링 레퍼런스 (dangling reference)
- 원래 참조하던 것이 사라진 레퍼런스