표준의 12.2.5 절은 말합니다 : 전체 식의 완료가 전화를 포함 할 때까지임시 수명 연장
함수 호출에서 기준 매개 변수에 임시 바운드 (5.2.2) 가 지속 . 함수에서 반환 된 값에 대한 임시 바인딩은 함수가 종료 될 때까지 문 (6.6.3)을 유지합니다. 이러한 모든 경우에 참조가 바인드 된 임시를 제외하고 참조를 초기화하는 표현 의 평가 중에 작성된 임시 키는 생성 된 의 전체 표현식의 끝에서 삭제되고 그들의 건설의 역순으로 진행. 건설.
내가 이해하려고 노력하는 코드는 다음과 같습니다 라인 #1
에
#include <iostream>
const int& foo(const int& fooRef)
{
return fooRef;
} // #0
int main (void)
{
const int& numberRef = foo(5); // #1
std::cout << numberRef; // #2
return 0;
}
은 임시 객체가 생성되어 foo
의 fooRef
매개 변수에 바인딩됩니다. fooRef
은 라인 #0
에서 파괴되었습니다. 그래서 평생 연장은 전이 적이 아니기 때문에 임시가 여기에서 파괴되어야한다고 생각했습니다.
질문 :
이
until the function exits
은 무엇을 의미합니까?untill it finished executing
을 의미합니까?출력이
5
인 이유는 무엇입니까? 임시 객체가 여전히 라인#2
에 있습니까?이 견본의 작동 방식을 파악하기 위해 표준 견적을 어떻게 해석 할 수 있습니까?
표준에 대한 단계별 단계별 워크 스루가 크게 환영 할 것입니다. 고맙습니다!
P. S. 대답 대답 here도 코드가 broken
이고 내가 왜 그런 결과를 얻지 못했습니까?