int& RefReturnVer1(int &ref)
{
ref++;
return ref;
}
ref라는 참조형을 return하고 반환형이 int&으로 참조형이다.
int main()
{
int num1 = 5;
int& num2 = RefReturnVer1(num1);
}
이 경우 int& num2 = ref;
와 같고 num2는 참조자의 참조자가 돼 num2는 num1의 참조자가 된다.
int main()
{
int num1 = 5;
int num2 = RefReturnVer1(num1);
}
이 경우 num2에는 참조자가 가지고 있는 값만 전달됨으로 num1과 num2는 다른 변수가 된다.
int RefReturnVer2(int &ref)
{
ref++;
return ref;
}
int main()
{
int num1 = 5;
int& num2 = RefReturnVer2(num1);
}
이 경우 int& num2 = 6
와 같으므로 에러가 난다.
int main()
{
int num1 = 5;
int& num2 = RefReturnVer2(num1);
}
이 경우 int num2 = 6
와 같고 num1과 num2는 별개의 변수가 된다.
int& RefReturnVer3(int &num1)
{
int num = num1;
return num;
}
이 경우
1. int& num2 = RefReturnVer3(num1);
는 num2는 지역변수 num의 참조자가 되지만 함수호출이 끝나고 num이 소멸되므로 잘못된 표기다.
2. int num2 = RefReturnVer3(num1);
는 num2에 num1의 값이 들어간다.