1. 程式人生 > >C++ 右值引用

C++ 右值引用

右值引用用於獲取匿名變數的使用權,並延長匿名變數的生命週期,比如表示式的返回和函式的返回,都是由編譯器建立的一些變數,沒有右值引用的時候只能通過賦值給

中間變數的方法來保持住這個值,但是這也增加了一次構造的開銷。為了能夠保持這個值而且又不用去再次構造那麼就可以用右值引用。除了表示式和函式返回值這種天生的右值

還可以通過std::move來將一個左值變為一個右值,左值是可以直接使用的變數(具名變數),為什麼還要轉換為右值。因為在類具有右值引用建構函式和右值引用賦值函式的時候就

可以呼叫此類函數了。前提是前面的左值不再使用了,因為在右值引用構造或者賦值函式裡面左值的內容已經被交給新類來管理了(一般都會這麼做,否則還要什麼右值引用類函

數)。

左值引用是具名變數值的別名,而右值引用則是不具名(匿名)變數的別名。

常量左值引用在C++98標準中開始就是個“萬能”的引用型別。它可以接受非常量左值、常量左值、右值對其進行初始化。

而且在使用右值對其初始化的時候,常量左值引用還可以像右值引用一樣將右值的生命期延長。不過相比於右值引用所引用的右值,

常量左值所引用的右值在它的“餘生”中只能是隻讀的。相對地,非常量左值只能接受非常量左值對其進行初始化。

引自: http://book.2cto.com/201306/25366.html