2013-07-21 41 views
2

如果我有一個返回類似我應該通過值還是通過r值參考捕獲返回值?

std::vector<int> foo() 
{ 
    std::vector<int> v; 
    v.push_back(1); 
    return v; 
} 

一些對象,然後就是說

std::vector<int> &&v = foo(); 

std::vector<int> v = foo(); 

之間的差異的功能?

(爲什麼)我會比其他人更喜歡嗎?

(我懷疑這可能是一個重複的問題,但我無法找到合適的搜索詞。)

+0

對此是否有幫助? http://stackoverflow.com/questions/13618506/is-it-possible-to-stdmove-objects-out-of-functions-c11/13618587#13618587 – billz

+0

@billz:是的,它基本上似乎說,他們做的當你返回一個對象時也是如此。 – Mehrdad

回答

3

讀其中之一(從而知道它做一些合理的)需要大約臨時工,以及如何理解將臨時綁定到引用會延長臨時的生命週期。另一種是:

std::vector<int> v = foo(); 

總是選擇一個更容易理解的。如果foo返回const&&&,則它也可以正常工作,而如果將其存儲在&&中,則只有在返回值或&&時纔可以使用。

+1

+1表示「選擇一個更容易理解的人!」 – 2013-07-21 04:11:52