在解壓出的boost文件夾中tools/build/v2/user-config.jam文件中添加如下configuration
# Configure gcc-4.8 using gcc : 4.8 : "/usr/bin/g++-4.8" : <cxxflags>"-std=c++11 -march=native -flto -O3" <linkflags>"-flto -O3" ;
然後,使用./b2 toolset=gcc-4.8來編譯BOOST即可。
最後修改時間:2013.03.19 -- 13:08
衆所周知,C++11的新特性中有一個非常重要的特性,那就是rvalue reference,右值引用。
引入它的一個非常重要的原因是因爲在C++中,常常右值,通俗地講"在等號右邊的"臨時變量或者臨時對象,我們是無法得到它的修改權限的。
由於類的構造和析構機制,往往產生的臨時變量或臨時對象的拷貝構造及析構,會帶來不少的時間、資源消耗。
也同樣由於這樣的限制,有不少C++程序員依然保有一部分C風格的寫法,例如將A = factory(B, C);之中的A,以函數引用參數的形式傳入等等。但在C++11之後,我們可以完全保留C++的寫法,將右值明顯指出,就可以完成"直接獲得臨時對象"的資源的權限,例如A = std::move(B); 或者A = factory(B, C);,這時候就"幾乎完全"省去了拷貝的過程,通過直接獲取由factory(B, C)造出的臨時對象中的資源,達到省略拷貝的過程,最終析構的臨時對象,實際上只是一具空空的皮囊。
前天晚上幫大家複習C+_+,當時在講函數重載的時候羊說錯了一點。那就是Copy Constructor其實是可以重載的。
當時緣起是一道考試題,然後就忘了怎麼講到這個的。那時候我還在想這個問題,不過我還是這麼告訴別人了。今天再想了一會兒,覺得不妥,然後查閱了一番,發現Copy Constructor也是可以重載的。
在運用template的時候,我們有時候是需要在“複製一個對象”的時候,完成一次“隱式類型轉換”,這時候就要用到template copy constructor了。比如說,你可能在有時候需要將int拷貝出一份double型的數據,或者使用C-字符串char *類型的字符串轉換成一個C++ std::string類型的字符串等等。