Rvalue 참조가 함수 내에서 Lvalue처럼 동작하는 경우는 언제입니까?
아래 코드 조각에서 foo 함수는 rvalue 참조를 받습니다. bar라는 매개변수입니다.
void foo(string&&& bar) { string* temp = &bar; cout << *temp << " @:" << temp << endl; }
이 코드는 다음과 같은 질문을 촉발시켰습니다. bar는 다음과 같이 처리됩니까? 주소를 가져올 수 있으므로 함수 내의 lvalue는 무엇입니까?
bar는 Rvalue입니까 아니면 Lvalue입니까?
이 질문은 본질적으로 질문 자체 내에서 답변됩니다. 이름이 있는 모든 것은 lvalue입니다. 따라서 bar는 lvalue로 인식됩니다. 그러나 bar에는 "문자열에 대한 rvalue 참조"라는 유형이 있다는 점에 유의하는 것이 중요합니다.
bar를 rvalue로 처리하려면 std::move()를 적용해야 합니다. .
Lvalue 참조와 Rvalue 참조를 구별하는 이유는 무엇입니까?
이것은 각 참조 유형에 바인딩할 수 있는 항목을 고려할 때 구별이 중요해집니다. Lvalue는 lvalue 참조에 바인딩할 수 있는 반면 rvalue는 rvalue 참조에 바인딩할 수 있습니다(그리고 무엇이든 const에 대한 lvalue 참조에 바인딩할 수 있습니다).
즉, rvalue는 lvalue 참조에 바인딩할 수 없으며 그 반대의 경우도 마찬가지입니다.
Rvalue 참조 유형의 매개변수
rvalue 참조의 함수 매개변수를 다루는 경우 유형의 경우 참조가 가리키는 값에 대해 이것이 무엇을 의미하는지 이해하는 것이 중요합니다. rvalue 참조는 할당된 값이 rvalue임을 나타냅니다. 결과적으로 표현식이 끝나면 해당 리소스가 해제되어 rvalue로 관리할 수 있습니다.
Rvalue 참조 전달
rvalue 참조 매개변수를 추가로 전달할 때, 두 가지 옵션이 있습니다:
결론
lvalue 참조와 rvalue 참조의 차이점은 얻은 후의 동작이 아니라 무엇에 바인딩할 수 있는지에 있습니다. 그들을. 이러한 이해는 함수 내에서 참조를 효과적으로 처리하고 관리하는 데 필수적입니다.
위 내용은 Rvalue 참조는 언제 함수 내에서 Lvalue처럼 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!