참조(References)

참조 타입이라는 다른 (다소 비슷한) 개념도 있습니다. 참조 타입은 메모리에 이미 존재하는 객체에 대한 별칭입니다. 참조는 초기화되어야 합니다. 우리는 참조 타입을 type_name 다음에 앰퍼샌드 &로 설명합니다.
int main()
{
int x = 123;
int& y = x;
}
이제 우리는 메모리에 있는 같은 int 객체를 가리키는 두 개의 다른 이름이 있습니다. 우리는 다음 이미지를 사용하여 메모리에 있는 객체를 시각화할 수 있습니다.

만약 우리가 그 중 하나에 다른 값을 할당한다면, 객체의 값이 변경될 것입니다. 왜냐하면 우리는 메모리에 하나의 객체를 가지고 있지만, 두 개의 다른 이름을 사용하고 있기 때문입니다.
int main()
{
int x = 123;
int& y = x;
x = 456; // both x and y now hold the value of 456
y = 789; // both x and y now hold the value of 789
}
또 다른 개념은 상수 참조(const reference)입니다. 상수 참조는 읽기 전용 객체에 대한 별칭입니다.
int main()
{
int x = 123;
const int& y = x; // const reference
x = 456;
// both x and y now hold the value of 456
}
함수와 함수 매개변수에서 참조(reference)와 상수 참조(const reference)에 대해 더 자세히 알아볼 것입니다. 지금은 기존 객체에 대해 우리가 지정하는 별명(alias) 또는 다른/추가적인 이름으로 간주합시다.
int* p;와 같은 포인터 유형 선언에서 *의 사용과 *p = 456와 같이 포인터를 역참조하는 *의 사용을 혼동하지 않는 것이 중요합니다. 같은 별표 문자이지만 두 가지 다른 맥락에서 사용됩니다.
int& y = x;와 같은 참조 유형 선언에서 &의 사용과 int* p = &x와 같이 주소를 가리키는 주소 연산자로서의 &의 사용을 혼동하지 않는 것이 중요합니다. 동일한 리터럴 기호가 두 가지 다른 용도로 사용됩니다.
'IT > C++' 카테고리의 다른 글
| C++ Automatic Type Deduction (auto) (0) | 2023.05.30 |
|---|---|
| C++ Strings(c_str() / Substrings) (0) | 2023.05.29 |
| C++이란? (0) | 2023.05.27 |
| C++ Pointers 정리 (0) | 2023.05.27 |
| C++ 기초 총정리 요약 (0) | 2023.04.24 |
댓글