해결된 질문
24.04.15 22:53 작성
·
138
·
수정됨
1
안녕하세요.
8:07에서 반환값의 자료형이 int&이니
getValue 함수 안의 value를 선언할 때도 int&로 선언해야 하는 것 아닌가요?
즉, 함수의 반환값과 변수의 자료형을 맞춰야 하는 것이 아닌지 궁금합니다.
답변 1
2
안녕하세요, 질문&답변 도우미 Soobak 입니다.
int& getValue(int x)
{
int value = x * 2;
return value;
}
위 코드의 함수에서 int& getValue(int x)
함수의 반환형은 int&
즉 참조(reference)입니다.
따라서, return value;
는 해당 함수 value
의 참조를 반환하게 됩니다.
이 때, 참조는 기본적으로 어떤 변수의 별명(alias)과 같이 동작하며, 자체적으로 메모리를 소유하고 있지 않고, 다른 변수의 메모리 주소를 참조하기만 합니다.
따라서, 참조는 초기화될 때 메모리에 존재하는 명확한 변수를 가리켜야 합니다.
만약, 말씀하신 것처럼, int& value = x *2;
형태로 value
를 선언하면, x * 2
가 생성하는 임시 값에 참조를 직접적으로 연결할 수 없습니다.
또한, 여기서 발생하는 기술적인 문제는 "반환타입과 반환되는 값의 유형이 일치하지 않는다." 는 것이 아니라, 해당 강의의 10:00 부분 경 부터 다루어지는 "반환되는 참조가 지역 변수에 대한 참조이므로, 유효하지 않은 메모리를 가리키게 된다" 는 것이라는 점 또한 염두해두시면 학습에 도움이 되실 것 같습니다.