본문 바로가기

프로그래밍/C++

Reference (참조자)

Reference

 : 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름, 다른 대상을 참조할 수 있는 기능이다.

  Reference는 그 자체가 참조하는 대상이 된다. 일종의 별명을 붙여주는 것이다.

  반드시 변수 선언과 동시에 참조하는 대상을 지정해주어야 한다.

  값을 복사하지 않고 같은 메모리 공간의 이름(참조)이다.

 

ReferencePointer의 차이점

 : Pointer다른 대상을 참조하기 위해서 참조할 대상의 메모리 주소를 담아두고 참조를 한다.

  Reference주소를 저장하는 것이 아니라 바로 접근하여 참조할 수 있게 만들어준다.

 

Referenceconst가 붙으면 참조하는 대상의 값을 변경할 수 없다. 단순 값 참조용으로만 쓴다.

 

Reference 변수는 선언할 때만 참조 대상을 결정하고 선언이 된 후에는 다른 변수를 대입해주어도 참조하는 것이 아닌, 해당 변수의 값을 참조하는 대상의 값에 덮어써주는 역할을 한다.

 

ex)

// 변수 num1의 주소 값을 반환해서 포인터 ptr에 저장한다.
int *ptr = &num1;

// 변수 num1에 대한 참조자 num2를 선언한다.
int &num2 = num1;

Reference의 단점

 : 참조자를 이용해서 어떤 변수에 저장된 값을 변경할 수 있다.

 

ex)

void Func(int &ref) {}

 const 키워드를 사용하면 함수 내에서 참조자 ref를 이용한 값의 변경을 할 수 없게 된다.

 

ex)

void Func(const int &ref) {}

함수 내에서 참조자를 통한 값의 변경을 진행하지 않을 경우, 참조자를 const로 선언해서 함수의 원형만 봐도 값의 변경이 이뤄지지 않음을 알 수 있게 한다.

'프로그래밍 > C++' 카테고리의 다른 글

const와 static  (0) 2019.06.04
복사생성자  (0) 2019.06.03
while과 do while, #define과 inline  (0) 2019.05.31
C++ 기초 2  (0) 2019.04.01
C++ 기초  (0) 2019.03.28