Reference
: 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름, 다른 대상을 참조할 수 있는 기능이다.
Reference는 그 자체가 참조하는 대상이 된다. 일종의 별명을 붙여주는 것이다.
반드시 변수 선언과 동시에 참조하는 대상을 지정해주어야 한다.
값을 복사하지 않고 같은 메모리 공간의 이름(참조)이다.
Reference와 Pointer의 차이점
: Pointer는 다른 대상을 참조하기 위해서 참조할 대상의 메모리 주소를 담아두고 참조를 한다.
Reference는 주소를 저장하는 것이 아니라 바로 접근하여 참조할 수 있게 만들어준다.
Reference에 const가 붙으면 참조하는 대상의 값을 변경할 수 없다. 단순 값 참조용으로만 쓴다.
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 |