2013-06-30 12 views
4

나는 xvalue에서 표준을 읽었습니다. 그것은 밀접하게 rvalue reference 표현과 관련이 있습니다. 그러나 프로그래밍 할 때 xvalue이 필요한 시나리오를 찾을 수 없습니다.xvalue를 사용하는 위치는 언제입니까?

예 : function myClass&& f()rvalue reference을 반환하십시오. 따라서 표현 f()은 xvalue입니다. 그러나 이것은 어떻게 유용한가? 프로그래밍에서이 기법을 어떻게 활용할 수 있습니까?

다른 함수 myClass g()이 정의되어있는 경우 g()f()의 차이점은 무엇입니까?

g() prvalue 대신 어떤 경우에 f() and xvalue을 사용해야합니까?

+0

[move] (http://en.cppreference.com/w/cpp/utility/move) – billz

+0

과 같은 질문 [xvalue] (http://stackoverflow.com/questions/3601602/what)을 참조하십시오. -are-rvalues-lvalues-xvalues-glvalues-and-prvalues) – aaronman

+0

@aaronman이 게시물을 읽었습니다. 그러나 그것은 내가 생각을 모르는 표준 텍스트만을 복사합니다. – Zachary

답변

5

예제에서, prvalue를 반환하는 함수 g과 xvalue를 반환하는 함수 f을 정의했습니다.

일반적인에있는 어떤이는 각각 함수 호출, g()f()의 결과를 전달하는 경우, 다른 기능 h(...)에, 그들은 모두 (인수로를 rvalue 소요 h의 과부하를 선호하는 것입니다 경우가 복수 오버로드는 h입니다. g()f() 사이

차이은 (즉, 다이내믹 형 정적 (= 선언) 타입과 동일하다) g() 더 동적 유형이 없다는 것이다 f()은 (정지형에서 아마도 다른) 동적 타입을 갖는 반면 즉, 기본 클래스에 대한 rvalue 참조를 반환하도록 정의 된 경우 다형성 동작을 사용할 수 있습니다. (그것은 prvalues가 우변은 반면, xvalues ​​및 lvalues ​​함께 glvalues의 큰 그룹을 형성하는 이유는 lvalues과 공유를 xvalues이 특성입니다.) 사용 사례의 예

, 난 그냥이 참조합니다 기존 질문 : Is there any case where a return by rvalue reference is useful.

+0

jogojapan, "동적 유형은 정적 (선언 된) 유형과 동일합니까?"라는 것은 무엇을 의미합니까? 동적 유형은 다형성을 의미합니다. – Zachary

+0

prvalues ​​및 xvalues도 큰 그룹 rvalue를 형성합니다. xvalue는 glvalue와 rvlaue에 속하는 둘 다 특별하다. "xvalues가 lvalues와 공유하는 특성입니다." – Zachary

+0

@Zack 동적 유형은 런타임에 표현식 값의 유형입니다 .Prvalues에도 동적 유형이 있지만 항상 그렇습니다 정적 타입과 동일합니다. 즉, 선언시에 컴파일 타임에 주어진 타입입니다 (C++ 11 표준의 1.3.8 정의 참조). 그러나 실제로는 "동적이지 않습니다. "유형이라고 할 때 엄격히 말하면 동적 유형은 정적 유형과 동일합니다. – jogojapan