[C++] 참조자(레퍼런스)란? 참조자는 어디에 사용할까?
2023. 8. 9. 09:20ㆍProgramming/C++
반응형
요즘 회사에서 업무 때문에 다시 C++ 언어를 다시 사용해야 한다. 코드 분석을 하는 도중에 궁금한 점이 생겼다. 함수의 인자로 참조자를 받고 있었다. 왜 참조자를 함수의 인자로 받는 것인지 궁금해서 찾아봤다.
참조자(레퍼런스, reference)란?
레퍼런스란 포인터처럼 변수나 상수를 가리키는 방식으로 컨파일러에게 가리키고 있는 변수나 상수에게 또 다른 이름이 있다고 알려주는 것이다.
예시
#include <iostream>
int main() {
int n = 1;
int& reference_n = n;
std::cout << "n : " << n << std::endl;
std::cout << "reference_n : " << reference_n << std::endl;
n = 4;
std::cout << "n : " << n << std::endl;
std::cout << "reference_n : " << reference_n << std::endl;
reference_n = 2;
std::cout << "n : " << n << std::endl;
std::cout << "reference_n : " << reference_n << std::endl;
return 0;
}
실행 결과
n : 1
reference_n : 1
n : 4
reference_n : 4
n : 2
reference_n : 2
함수의 인자로 참조자를 받는 이유?
함수의 인자를 값으로 받을 때의 한계
- 전달하려는 값이 크면 큰 비용이 들어 성능이 저하된다.
- 값으로 전달받은 경우 호출자에게 값을 반환하는 유일한 방법은 함수의 반환 값을 사용하는 것이다.
참조자는 이 둘 모두를 해결할 수 있다.
참조
반응형
'Programming > C++' 카테고리의 다른 글
[C++] typedef struct, struct 차이 (0) | 2023.08.10 |
---|---|
[C++] 내가 정적 라이브러리(Static Library) 추가할 줄 모른다고?③ (0) | 2023.08.07 |
[C++] 내가 정적 라이브러리(Static Library) 추가할 줄 모른다고?② (0) | 2023.08.06 |
[C++] 내가 정적 라이브러리(Static Library) 추가할 줄 모른다고?① (0) | 2023.08.05 |