[C++] 참조자(Reference)CSE/C++2024. 1. 20. 20:37
Table of Contents
참조자란?
기존에 있던 C언어에서는 다른 변수를 가르키고 싶을 때 포인터를 사용했었다.
C++에서도 사용할 수 있지만, 다른 방식도 존재하는데 이 방식이 바로 참조자(Reference) 이다.
참조자는 접근하려는 변수에 다른 이름을 말한다.
#include <iostream>
int main()
{
int A = 10;
int& Another_A = A;
Another_A = 20;
// A = 20, Another_A = 20.
return 0;
}
Another_A를 변경하니 A의 값도 변경하는 것을 확인할 수 있다.
포인터와 참조자의 차이점
그렇다면 포인터와 참조자의 차이는 무엇일까?
1. 참조자는 처음 정의할 때 누구를 가리키는지 명시해야 한다.
포인터는 처음 정의할 때 누구를 가르키는지 명시하지 않아도 된다.
하지만, 참조자는 처음 정의할 때 명시하지 않으면 사용할 수 없다.
int* Pointer; // O
int& Reference; // X
2. 참조자는 한번 정의한 이후 다시 재정의 할 수 없다.
포인터는 정의한 이후에도 다시 재정의해서 가리키는 대상을 변경할 수 있다.
하지만 참조자는 가리키는 대상을 변경할 수 없다.
int* Pointer = &a;
Pointer = & b // 문제없이 작동된다.
int& Reference = a;
Reference = b // 문제발생!
3. 참조자는 메모리 상에 존재하지 않을 수도 있다.
포인터는 지정해 둔 변수를 가리킨다. 포인터는 메모리 상에 존재하여 공간을 차지한다.
하지만, 참조자는 지정한 변수의 공간을 사용하면 되기 때문에 존재할 필요가 없다.
다만 모든 상황에서 참조자는 메모리 공간을 사용하지 않는 것은 아니다.
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!