본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-19

참조 vs 포인터

우리가 앞서 포인터에 대해 배웠었지만, 포인터와 아주 비슷한 개념으로 대신 쓸 수 있는 참조도 존재한다.

둘 다 메모리 주소를 나타내는 것인 동일하지만, 두 개념의 차이로 재할당 가능 여부가 존재한다.

 

포인터는 포인터를 변경해서 언제든지 새 메모리 주소, 새 액터, 새 컴포넌트 가리키기 등이 가능하지만,

참조는 한 번 가리키면, 다른 값을 가리키는 것이 불가능하다.

따라서 참조는 해당 변수 전용의 별칭느낌으로 사용된다.

또한 포인터는 null 할당이 가능하지만, 참조는 선언과 동시에 초기화가 이루어져야하므로 null 할당이 불가능하다.

강의 내 캡처 내용

이제 간단하게 참조를 이용하여 테스트를 해보자.

간단하게 데미지 변수를 선언하고, 해당 변수를 참조한 DamageRef를 선언해주었다.

포인터가 *를 선언했듯이, 참조는 &선언이 필요하다.

이후에 DamageRef를 로그에 출력해보면 Damage의 값인 0이 출력된다.

 

이번엔 참조에 추가적으로 값을 할당해보자.

위 코드의 경우 어떤 값을 출력하게 될까?

답은 5, 5를 출력하게 된다.

DamageRef의 경우 5를 할당했으니 5로 변경되고, DamageRef가 Damage의 참조기 때문에 Damage의 값 또한 5로 변경하게 된다.