前不久facebook在github上發布了一個c++工具庫folly,其中的實現大量的使用了c++ 11的新特性,同時,gcc 從4.3版本開始支持c++ 11, 到現在的版本4.8,已經支持了絕大部分c++ 11的新特性(support list),讓我感到時候有必要認真學習一下c++ 11 ...
緊接上一篇譯文,這一篇對move語義的來龍去脈有非常詳盡的回答 原文 ,篇幅較長,如果你能讀完,相信你不會再問任何關於move語義的問題了。 譯文 我的第一個回答是對move語義的一個極其簡單的介紹,故意略過了很多細節。但是move語義確實還有很多需要解釋的,我想這是我給出第二個回答來填坑的時候了。第一個回答已經很久了,我覺得完全把它替換掉有點不太合適,作為一篇介紹,它依然挺好。如果你想更深入,請 ...
2013-01-22 14:27 22 11006 推薦指數:
前不久facebook在github上發布了一個c++工具庫folly,其中的實現大量的使用了c++ 11的新特性,同時,gcc 從4.3版本開始支持c++ 11, 到現在的版本4.8,已經支持了絕大部分c++ 11的新特性(support list),讓我感到時候有必要認真學習一下c++ 11 ...
上一篇譯文中,我們了解到C++中的Aggregates和POD類型,那么在C++ 11中這些定義會有怎樣的改變呢,什么是trivial和standard-layout類型呢?相信在這篇譯文中,可以找到你想要的答案 ...
C++ 11標准中統一了初始化語法,在了解這些變化之前,我們有必要對Aggregate類型和POD類型有所了解,看到stack overflow上有篇不錯的文章(原文),對Aggregate、POD和C++ 11中的變化有詳盡的解釋,感覺非常不錯,先翻譯前半部分,后半部分過兩天再給出。 ------------------------------------------------------- ...
C++0x中加入了右值引用,和move函數。右值引用出現之前我們只能用const引用來關聯臨時對象(右值)(造孽的VS可以用非const引用關聯臨時對象,請忽略VS),所以我們不能修臨時對象的內容,右值引用的出現就讓我們可以取得臨時對象的控制權,終於可以修改臨時對象了!而且書上說配合move函數 ...
前幾天轉載一篇quora上的文章,但是英文的,我還是覺得有必要將這篇文章翻譯一下,希望更多的人能夠看到 C++是一門復雜的語言 成為專業級c++程序員的路線: 步驟0:理解c++語言 必須去讀Stroustrup的《The C++ Programming Language ...
折疊 完美轉發 std::forward 參考 C++11出現的右值相關語法 ...
目錄 可拷貝和可移動的概念 移動構造函數和移動賦值函數 小結移動構造和移動賦值 std::move() 使用 std::move 實現一個高效的 swap 函數 Move ...
為什么要用移動語義 先看看下面的代碼 以上代碼拷貝構造函數會被調用兩次,一次是從GetTemp函數中有HugeMem()生成的一個臨時值用作返回值,另外一次則由臨時值構造出main中的變量a。析構函數調用了三次。這個過程如果指針指向非常大的內存時拷貝構造 的代價相當昂貴 ...