승쨩개발공부

[C++] 레퍼런스 본문

C++

[C++] 레퍼런스

SeungHyune 2021. 11. 30. 22:24

레퍼런스

원본 데이터에 접근하는 방법은 2개가 있다.

 

1. 포인터

주소를 통해 접근

-> 간접참조

 

2.레퍼런스

별명을 부여해서 접근

-> 직접참조

 

래퍼런스 선언

자료형 & 변수명(별명)

 

int     iA = 10;

int&  r = iA;

 

r = 100;

 

cout << "iA: " << iA << endl;   // 100

cout << "r : "  << r << endl;    // 100

 

 

레퍼런스의 참조 메모리 변경

불가능하다.

레퍼런스는 한번 참조한 메모리를 변경할 수 없다.

-> 선언과 동시에 초기화를 진행해야만 한다.

-> NULL 초기화가 불가능하다

 

 

int iA = 10, iB = 20;
int& r = iA;

r = 100;

// iB의 값을 r이 복사 받는 것.                                  
r = iB;      // 참조 메모리 변경이 아니다! iA = iB;
r = 200;

cout << "iA: " << iA << endl;    // 200
cout << "iB: " << iB << endl;    // 20

 

 

 

 

 

 

 

레퍼런스와 const

int              iA = 10;

const int&   r = iA;

 

iA = 100;   // 가능

r  = 100;   // 불가능

 

원본 데이터가 const로 인해 상수화가 되었을 경우

참조하는 변수 또한 const로 선언해야한다

 

const int iA = 10;

int&       r  = iA;   // 불가능

 

iA = 100;   // 불가능

r  = 100;   // 가능

 

 

 

레퍼런스의 크기

레퍼런스는 크기가 없다.

 

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

[C++] 조건부 컴파일  (0) 2021.12.01
[C++] 매크로(Define)  (0) 2021.12.01
[C++] 함수 포인터  (0) 2021.11.30
[C++] 공용체 (union)  (0) 2021.11.30
[C++] 열거체(enum)  (0) 2021.11.30