[C++] 반환형이 참조형인 경우

dd_ddong·2022년 7월 8일
0

c++

목록 보기
8/38

참조형을 return, 반환형이 참조형인 경우

int& RefReturnVer1(int &ref)
{
	ref++;
    return ref;
}

ref라는 참조형을 return하고 반환형이 int&으로 참조형이다.

1. int& num2 = RefReturnVer1(num1);

int main()
{
	int num1 = 5;
    int& num2 = RefReturnVer1(num1);
}

이 경우 int& num2 = ref;와 같고 num2는 참조자의 참조자가 돼 num2는 num1의 참조자가 된다.

2. int num2 = RefReturnVer1(num1);

int main()
{
	int num1 = 5;
    int num2 = RefReturnVer1(num1);
}

이 경우 num2에는 참조자가 가지고 있는 값만 전달됨으로 num1과 num2는 다른 변수가 된다.

참조형을 return, 반환형이 기본형인 경우

int RefReturnVer2(int &ref)
{
	ref++;
    return ref;
}

1. int& num2 = RefReturnVer2(num1);

int main()
{
	int num1 = 5;
    int& num2 = RefReturnVer2(num1);
}

이 경우 int& num2 = 6와 같으므로 에러가 난다.

2. int num2 = RefReturnVer2(num1);

int main()
{
	int num1 = 5;
    int& num2 = RefReturnVer2(num1);
}

이 경우 int num2 = 6와 같고 num1과 num2는 별개의 변수가 된다.

기본형을 return, 반환형이 참조인 경우

int& RefReturnVer3(int &num1)
{
	int num = num1;
	return num;
}

이 경우
1. int& num2 = RefReturnVer3(num1);는 num2는 지역변수 num의 참조자가 되지만 함수호출이 끝나고 num이 소멸되므로 잘못된 표기다.
2. int num2 = RefReturnVer3(num1);는 num2에 num1의 값이 들어간다.

0개의 댓글