C++언어

[Unreal Engine 8기] C++ 레퍼런스

조현묵 2026. 3. 11. 19:46
  • 레퍼런스
더보기

포인터를 사용하면 주소값을 직접 다루어야 하므로 복잡해질 수 있다.
이 문제를 완화하기 위해 C++에서는 변수에 또 다른 이름을 부여하는 래퍼런스 문법을 도입함.

레퍼런스는 일반 변수와 거의 동일하게 사용할 수 있다.

그러나 내부적으로는 해당 변수를 직접 가리켜 주는 역활을 한다.

레퍼런스는 특정 변수에 대한 별명을 부여하는 것이다.

한 번 특정 변수의 레퍼런스를 연결하면, 이후로는 마치 그 변수가 두개의 이름을 갖는것과 같다.

선언 방법은 데이터형 뒤에 &를 붙인다.

Ex) int& ref = var; 처럼 사용할 수 있다. 이렇게 하면 ref의 값 변경시 var 읙 값도 변경이 된다.

  • 포인터와 레퍼런스의 차이점
더보기

포인터와 레퍼런스는 다른 변수를 제어한다는 점에서 유사하지만
몇가지 중요한 차이가 있다.

  1. 선언과 초기화 시점이 다르다.
    포인터는 선언 후, 나중애 = 연산자를 통해 가르킬 대상을 변경할 수 있다.
    반면에 레퍼런스는 선언과 동시에 초기화해야 하며
    초기화 이후에는 다른 대상에 재연결할 수 없다.
  2. 레퍼런스는 항상 다른 변수와 연결되어 있기 때문에 NULL이라는게 없다.
    반면에 포인터는 유효한 대상이 없음을 나타내기 위해 NULL 혹은 nullptr을 가질 수 있다.
  3. 간접 참조 문법의 유무이다.
    포인터는 주소값을 담으므로 접근할 때는 * 연산을 사용하고 주소를 가져올 때는 & 연산을 사용한다.
    하지만 레퍼런스는 변수 자체의 별명이므로 일반 변수와 연산하는 방법이 동일하다.
  • 상수 레퍼런스
더보기

레퍼런스에 상수 제약을 걸어서 읽기 전용으로 사용할 수 있다.

상수 레퍼런스를 사용하면 값을 복사하지 않고도 기존 변수를 보호할 수 있다.

Ex) const int% cref = x; 하면 복사 과정 없이 값을 읽을 수는 있지만 x 값을 수정 할 수는 없다.

'C++언어' 카테고리의 다른 글

[Unreal Engine 8기] C++ 포인터  (0) 2026.03.10
[Unreal Engine 8기] C++ 언어 기초3  (0) 2026.03.09
[Unreal Engine 8기]C++언어 기초2  (0) 2026.03.06
[Unreal Engine 8기] C++언어 기초1  (0) 2026.03.05