다음 스 니펫 foo
이 유효한지, 즉 함수 반환 값을 const 참조로 저장할 수 있는지 여부가 확실하지 않은지 혼란 스럽습니까?함수의 반환 값에 대한 참조
반환 값이 스택 프레임에 저장되어 있기 때문에 물어 보는 중입니다. 값이 반환 된 직후 유효하지 않을 수 있습니다.
Foo getFoo() {
return Foo();
}
void bar() {
const auto& foo = getFoo();
// more function calls...
// is foo guaranteed to be valid?
}
예, 유효합니다. –
나는이 질문의 다른 측면을 강조하고 싶었다. 복제본과 허브 셔터의 링크로 표시된 것은 실제로 메모리 관점을 다루지 않습니다. 새로운 스택 프레임이 할당 될 때 참조 된 객체가 덮어 쓰여지지 않는 이유에 대해 궁금합니다. – user695652
구현 정의 된 기능이라고 생각합니다. –