임시 객체를 상수 참조로 반환
C에서 스택의 임시 객체에 바인딩된 참조는 해당 기간 동안 임시 객체의 수명을 연장합니다. 참조 자체의. 이렇게 하면 매달린 참조 오류가 방지됩니다.
다음 예를 고려하세요.
<code class="cpp">string foo() { return string("123"); } int main() { const string& val = foo(); printf("%s\n", val.c_str()); return 0; }</code>
이 코드에서 foo()가 반환한 문자열은 임시 개체입니다. 그러나 const 참조 val에 바인딩되면 임시 수명은 main() 함수가 끝날 때까지 연장됩니다. 이를 통해 val은 임시 문자열의 내용에 안전하게 액세스할 수 있습니다.
C 표준에서는 특히 일반적인 매달려 참조 오류를 방지하기 위해 이 동작을 허용합니다. 이것이 없으면 위 예제의 임시 문자열은 foo() 함수의 끝에서 삭제되어 val이 잘못된 메모리 위치를 가리키게 됩니다.
중요 참고:
이 기능은 스택 기반 참조에만 적용됩니다. 객체의 구성원이거나 다른 동적 메모리 위치에 저장된 임시 객체의 수명을 연장하지 않습니다.
위 내용은 const 참조는 C에서 임시 개체의 수명을 어떻게 보장합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!