Rvalue 참조를 함수 내의 Lvalue로 이해
소프트웨어 개발에서 rvalue 참조의 동작을 이해하는 것이 중요할 수 있으며, 특히 참조 작업 시 더욱 그렇습니다. 기능에서. 이 글에서는 rvalue 참조가 함수 내에서 사용될 때 lvalue로 처리되는지에 대한 질의에 대해 자세히 설명합니다.
질문
한 개발자가 다음과 같은 질문을 했습니다.
"아래 코드 조각에서 'bar' 변수는 rvalue 또는 rvalue입니까? lvalue?
void foo(string&& bar){ string* temp = &bar; cout << *temp << " @:" << temp << endl; }
일반적으로 rvalue의 주소를 얻을 수 없다는 것이 알려져 있기 때문에 이러한 질문이 발생합니다. 그러나 위 코드에서는 rvalue 참조 'bar'의 주소를 성공적으로 얻었습니다. 함수 내 참조의 성격에 대한 질문입니다."
The 답변
1. Rvalue와 Lvalue의 차이점:
대답은 매우 유명하며 가치가 높습니다. ,“bar”无论其实际类型是什么,city终是一个lvalue。
2. Rvalue를 Lvalue로 참조:
接下来的重点是,尽管“bar”是一个对象,但其类型是一个rvalue 참조。 Rvalue 참조와 Lvalue 참조 구별의 목적:
差异在于可以绑定到它们的内容:lvalue reference可以绑定到lvalues,而rvalue 참조可以绑定到rvalues。这意味着rvalue 不能绑定到lvalue 참조,반지亦然。
4. 함수 매개변수의 Rvalue 참조:
当一个函数的参数是rvalue 참조는 值是一个rvalue입니다. :
可以安全地将绑定的对象视为rvalue(例如,通过窃取其资源)。
区分rvalue 참조 및 lvalue 참조对于理解函数中传值的语义不常重要。rvalue 참고자료는 保持持原始对象의 所有权的情况下安全地使要.
위 내용은 Rvalue 참조는 함수 내에서 Lvalue로 처리됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!