- 항상 레퍼런스는 무언가의 별칭이 되어야함
- 함수가 끝남과 동시에 지역변수는 메모리에서 사라짐
- 그러므로 지역변수의 레퍼런스를 리턴하면 레퍼런스가 가리킬 변수가 없어져 버린다.
/*4.cpp*/
#include <iostream>
using std::cout;
using std::endl;
//이경우는 문제가 없다.
//외부의 메모리를 포인팅하고 있으므로 리턴해도 무리가 없다.
int& Plus(int &num)
{
++num;
return num;
}
// 이경우에는 문제가 발생한다.
// 함수 종료와 동시에 참조할 변수가 사라져 버린다. (dangling reference)
int& Plus2()
{
int num = 2;
int& numRef = num;
++numRef;
return numRef;
}
int main()
{
int x =4;
Plus(x); // x의 메모리 주소로 포인팅
cout << "before : " << x << endl;
int &y = Plus2();
cout << "after : " << y << endl;
return 0;
}