함수에서 반환되는 임시 객체
글쓴이: porawon / 작성시간: 목, 2014/08/21 - 5:46오후
class Temp
{
};
Temp foo()
{
return Temp();
}
int main()
{
const Temp& temp = foo();
}위의 코드에서 foo 함수가 임시객체를 반환하게 되는데 이 임시객체는 메모리 상에서 어디에 저장되나요?
foo 함수의 스택에 저장되면 함수 콜 이후에 소멸되서 위의 main 함수와 같은 코드는 사용할 수 없을 거 같은데 컴파일이 되서 질문드립니다.
Forums:


명세가 없으므로 알 수 없습니다. 말씀하신대로 하면
명세가 없으므로 알 수 없습니다. 말씀하신대로 하면 안되는거가 맞습니다.
C/C++은 컴파일되면 OK인 언어가 아닙니다.
컴파일되도 하면 안되는 게 굉장히 많습니다. 특히 메모리 관련해서는요.
http://stackoverflow.com/ques
http://stackoverflow.com/questions/11560339/returning-temporary-object-and-binding-to-const-reference
사용해도 되는 코드 맞습니다.
foo()가 반환하는 Temp는 main함수의 스택에 생성되겠죠.
감사합니다.^^
도움 많이 됐습니다. const 참조자만 가능하군요.