C++에서 참조(Reference)는 변수의 별명(Alias)을 제공하는 기능입니다. 참조는 선언된 변수에 대해 다른 이름을 붙이는 역할을 하며, 이를 통해 간접적으로 변수를 접근하거나 수정할 수 있습니다. 참조는 포인터와 유사하지만, 사용법이 더 간단하고 안전합니다.
참조의 기본 사용 예제
#include <iostream>
int main() {
int a = 10; // 정수 변수 a 선언 및 초기화
int& ref = a; // a에 대한 참조 ref 선언
std::cout << "a: " << a << std::endl; // a의 값 출력
std::cout << "ref: " << ref << std::endl; // ref의 값 출력
ref = 20; // ref를 통해 a의 값을 변경
std::cout << "a: " << a << std::endl; // a의 값 출력 (20)
std::cout << "ref: " << ref << std::endl; // ref의 값 출력 (20)
return 0;
}
이 예제에서:
int& ref = a;는 변수 a에 대한 참조 ref를 선언합니다. 이제 ref는 a의 별명이 됩니다.
ref를 통해 a의 값을 변경하면 a 자체의 값이 변경됩니다. 이는 ref가 a를 직접 참조하기 때문입니다.
참조의 유용한 사용 사례
참조는 다음과 같은 상황에서 유용합니다:
함수 인자로 사용: 참조를 통해 함수 인자에 원본 데이터를 전달할 수 있습니다. 이는 복사본을 생성하지 않으므로 성능이 향상됩니다.
리턴 값으로 사용: 함수가 참조를 리턴하면 함수 외부에서 해당 변수를 직접 수정할 수 있습니다.
복잡한 데이터 구조 조작: 큰 구조체나 클래스 객체를 참조로 전달하여 불필요한 복사를 피할 수 있습니다.
함수 인자로 참조 사용 예제
#include <iostream>
void increment(int& value) {
value++; // 참조를 통해 원본 변수의 값을 증가시킴
}
int main() {
int a = 10;
increment(a); // a를 참조로 전달
std::cout << "a: " << a << std::endl; // a의 값이 증가되어 출력됨 (11)
return 0;
}
이 예제에서:
increment 함수는 int& 타입의 참조를 인자로 받습니다.
함수 내에서 참조를 통해 원본 변수 a의 값을 직접 수정합니다.
참조는 포인터와 달리 항상 초기화가 필요하고, null 값을 가질 수 없습니다. 이는 참조가 더 안전하게 사용될 수 있도록 합니다.