[C++][Visual Studio]Visual studio 2010 C++0x new feature: rvalue reference

[C++][Visual Studio]Visual studio 2010 C++0x new feature: rvalue reference

Visual studio 2010為C++的開發人員新增了rvalue reference這個C++0x的功能,主要是用來解決過多臨時變數的問題,讓開發人員可以寫出更有效率的 C++ 程式碼。

 

rvalue reference又稱為右值引用,是沒有名稱的臨時變數,在記憶體上沒有固定的位址,這邊可以從大家最熟悉的字串串接來看:


string str1 = "123";
string str2 = "456";
string str3 = str1 + str2 + "789" + "101112";

 

以上面這個例子來說,大家都知道在自串串接時會有臨時變數的耗費,也就是在上面程式中的str1 + str2那邊會先將變數的串接完的值存在一個臨時的變數。這邊談到的概念可參閱string類別的+運算子實作。

image

 

這樣的問題在運算頻繁時會更加嚴重。而若是這樣的臨時變數能讓我們引用,利用臨時變數的引用重覆去運算,可有效的改善這樣的問題,rvalue reference就是這樣的技術。

 

rvalue reference在使用上跟以前我們使用的lvalue reference類似,lvalue reference是用&去取得引用,而rvalue reference是用&&去取得引用。rvalue reference在Visual Studio 2010已經整入至標準函式庫內,故可直接參閱標準函式庫的做法,像是在string類別內就有用rvalue reference去實作新的+運算子。

image

 

Link