55. C++ 참조자 (int&
)
1. 개요
1.1 문서 개요
이 문서는 C++에서 참조자(Reference) 중 int&
와 같은 형태의 참조자에 대해 설명합니다. 참조자는 변수의 별칭(alias)을 생성하며, 메모리 주소를 직접 사용하지 않고도 원본 데이터를 수정하거나 참조할 수 있는 기능을 제공합니다. 이는 함수 인자 전달, 반환값 처리, 객체의 캡슐화 등 다양한 프로그래밍 기법에서 핵심적인 역할을 합니다.
2. 내용
2.1 참조자의 정의 및 특성
2.1.1 참조자의 기본 구조
참조자는 기존 변수에 대한 또 다른 이름을 정의합니다.
int a = 10;
int& ref = a;
ref = 20; // a의 값도 20으로 변경됨
ref
는 a
의 별칭이며, 동일한 메모리 주소를 가리킵니다.
2.1.2 참조자의 특징
- 반드시 초기화되어야 하며, 이후 다른 변수로 변경할 수 없습니다.
- 널(null) 참조자는 허용되지 않습니다.
- 참조는 포인터처럼 간접 접근 연산자가 필요 없습니다.
- 값 전달 방식의 함수보다 성능이 우수할 수 있습니다.
2.2 함수 인자로서의 참조자 사용
2.2.1 일반 참조
void increment(int& x) {
x += 1;
}
2.2.2 상수 참조
void printValue(const int& x) {
std::cout << x << std::endl;
}
상수 참조는 값 변경을 막으면서 참조의 장점을 제공합니다.
2.3 참조자와 포인터의 비교
항목 | 참조자 (int& ) |
포인터 (int* ) |
---|---|---|
초기화 | 반드시 필요 | 선택 가능 |
null | 불가능 | 가능 |
접근 방식 | 직접 접근 | 간접 접근 (* ) |
변경 가능성 | 불가능 | 가능 |
3. 마무리
C++의 참조자는 값 전달보다 효율적이며 포인터보다 안전한 방식으로 변수에 접근할 수 있는 기능을 제공합니다. 함수 인자 전달, 객체 수정 및 최적화에서 중요한 구성 요소로 사용되며, 초기화와 불변성 등의 특징을 통해 코드 안정성과 가독성을 동시에 확보할 수 있습니다.