R 값 참조없이 완벽한 전달은 C++에서 불가능하다는 것을 알고 있습니다.R 값 참조는 언제 필요합니까?
그러나 알고 싶습니다. 에이 필요합니까? 예를 들어
이 예 아웃 this page 포인트가되는 R 값 참조 명백하게 필요하다 :
X foo(); X x; // perhaps use x in various ways x = foo();
마지막 줄 이상 : 의해 유지
- 자폭 자원
x
,- temporal에서 자원을 복제합니다. y가
foo
에 의해 반환 된 경우- 임시를 삭제하고 리소스를 해제합니다.
X foo(); X x; // perhaps use x in various ways { X y = foo(); swap(x, y); }
는 그래서 나에게 필요한 을 그 r 값 참조를하지 같다 :
그러나 swap
가 제대로 구현된다면 간단한 변화 문제를 해결 한 것이 나에게 보인다 이 최적화를 위해. (맞습니까?)
따라서 이 아닌은 r 값 참조로 해결할 수 있습니다 (완벽한 전달은 제외하고 이미 알고 있습니다).
의미 이동? 실제로 완벽한 전달에는 참조 값 자체가 필요하지 않으며 다른 형식 공제 규칙 만 있으면됩니다. 그것들은 편리함 때문에 새로운 규칙을 위해 rvalue reference를 사용했습니다. –
@ R.MartinhoFernandes : "이동 의미론"이란 정확히 무엇을 의미합니까? 위에 보여준 것과 다른 것입니까? (또한, 내가 말하고자하는 것은 완벽한 전달은 * before *이 아니지만 R- 값 참조 때문에 가능하다는 것입니다.)이 – Mehrdad
스왑은'X x = std :: move (y);'. –