참조자 개요
참조자는 기존 변수의 별명(alias)으로, 동일한 메모리 위치를 가리키는 또 다른 이름입니다.
참조자를 사용하면 변수에 간접적으로 접근할 수 있으며, 포인터와 유사하지만 더 안전하고 사용하기 쉽습니다.
참조자 선언과 초기화
참조자는 선언과 동시에 초기화해야 합니다.
참조자 vs 포인터
참조자와 포인터의 주요 차이점
- 참조자는 반드시 초기화해야 합니다.
- 참조자는 재할당이 불가능합니다.
- 참조자는 널(null) 값을 가질 수 없습니다.
const 참조자
const 참조자는 참조하는 값을 수정할 수 없게 합니다.
참조자와 함수
참조자는 함수 매개변수로 자주 사용되며, 값의 복사 없이 효율적으로 데이터를 전달합니다.
참조 반환
함수에서 참조를 반환할 수 있습니다.
이는 효율적이지만 주의가 필요합니다.
오른값 참조 (C++ 11)
C++ 11에서 도입된 오른값 참조는 이동 의미론(move semantics)과 완벽 전달(perfect forwarding)을 구현하는 데 사용됩니다.
연습 문제
- 두 변수의 값을 교환하는 swap 함수를 참조자를 사용하여 구현하세요.
- 벡터의 모든 요소를 두 배로 만드는 함수를 작성하세요. 이 함수는 벡터를 참조로 받아야 합니다.
- 참조자를 반환하는 함수를 만들고, 이를 이용해 객체의 내부 상태를 수정하는 예제를 구현하세요.
참고자료