一、對象移動概述
C++11標準引入了“對象移動”的概念
對象移動的特性是:可以移動而非拷貝對象
在C++舊標準中,沒有直接的方法移動對象。因此會有很多不必要的資源拷貝
標準庫容器、string、share_ptr類既支持移動也支持拷貝。IO類和unique_ptr類可以移動但不能拷貝
對象移動的特點
在很多情況下會發生對象拷貝的現象,對象拷貝之后就被銷毀了,在這種情況下,對象移動而非對象拷貝會大幅度提升性能
使用移動而非拷貝的另一個原因是:類似于IO類或unique_ptr這樣的類,這些類都不能被共享資源(如指針或IO緩沖)。因此,這些類型的對象不能拷貝但可以移動
二、右值引用(&&)
為了支持移動操作,C++11標準引入了新的引用類型——右值引用
所謂右值引用就是必須綁定到右值的引用。我們通過&&而不是&來獲得右值引用
右值有一個很重要的性質:只能綁定到一個將要銷毀的對象
左值引用(&)
“引用(reference)”類型介紹參閱:
為了與“右值引用”區別開來,我們本篇文章中將“”引用(reference?