![](/c3/28845025380.jpg)
出版社:中國電力出版社 ISBN:9787519817749 商品編碼:28845025380 品牌:文軒 出版時間:2018-04-01 代碼:99 作者:斯科特·邁耶(ScottMeyers)著高博
"![](http://img14.360buyimg.com/cms/jfs/t1/203358/9/26405/134589/62f4a34cEcdefae53/84e082ed3b03dbc0.jpg) 作 者:(美)斯科特·邁耶(Scott Meyers) 著;高博 譯 著 定 價:99 出 版 社:中國電力出版社 出版日期:2018年04月01日 頁 數:281 裝 幀:平裝 ISBN:9787519817749 ●出版商聲明 1 致謝 3 緒論 7 第1章 型別推導 15 條款1:理解模板型別推導 15 條款2:理解auto型別推導 23 條款3:理解decltype 28 條款4:掌握查看型別推導結果的方法 35 第2章 auto 41 條款5:優先選用auto,而非顯式型別聲明 41 條款6:當auto推導的型別不符合要求時,使用帶顯式型別的初始化物習慣用法 46 第3章 轉向現代C++ 52 條款7:在創建對像時注意區分()和{} 52 條款8:優先選用nullptr,而非0或NULL 61 條款9:優先選用別名聲明,而非typedef 64 條款10:優先選用限定作用域的枚舉型別,而非不限作用域的枚舉型別 68 條款11:優先選用刪除函數,而非private未定義函數 74 條款12:為意在改寫的函數添加override聲明 79 條款13:優先選用const_iterator,而非iterator 85 條款14:隻要函數不會發射異常,就為其加上noexcept聲明 89 條款15:隻要有可能使用constexpr,就使用它 95 條款16:保證const成員函數的線程安全性 101 條款17:理解特種成員函數的生成機制 106 第4章 智能指針 113 條款18:使用std::unique_ptr管理具備專屬所有權的資源 115 條款19:使用std::shared_ptr管理具備共享所有權的資源 120 條款20:對於類似std::shared_ptr但有可能空懸的指針使用std::weak_ptr 129 條款21:優先選用std::make_unique和std::make_shared,而非直接使用new 133 條款22:使用Pimpl習慣用法時,將特殊成員函數的定義放到實現文件中 141 第5章 右值引用、移動語義和完美轉發 150 條款23:理解std::move和std::forward 151 條款24:區分萬能引用和右值引用 156 條款25:針對右值引用實施std::move,針對萬能引用實施std::forward 161 條款26:避免依萬能引用型別進行重載 169 條款27:熟悉依萬能引用型別進行重載的替代方案 175 條款28:理解引用折疊 187 條款29:假定移動操作不存在、成本高、未使用 193 條款30:熟悉完美轉發的失敗情形 196 第6章 lambda表達式 204 條款31:避免默認捕獲模式 205 條款32:使用初始化捕獲將對像移入閉包 212 條款33:對auto&&型別的形參使用decltype,以std::forward之 217 條款34:優先選用lambda式,而非std::bind 220 第7章 並發API 228 條款35:優先選用基於任務而非基於線程的程序設計 228 條款36:如果異步是必要的,則指定std::launch::async 232 條款37:使std::thread型別對像在所有路徑皆不可聯結 236 條款38:對變化多端的線程句柄析構函數行為保持關注 243 條款39:考慮針對一次性事件通信使用以void為模板型別實參的期值 247 條款40:對並發使用std::atomic,對特種內存使用volatile 254 第8章 微調 263 條款41:針對可復制的形參,在移動成本低並且一定會被復制的前提下,考慮將 其按值傳遞 263 條款42:考慮置入而非插入 273 想要理解C++11和C++14,不可止步於熟悉它們引入的語言特性(例如,auto型別推導、移動語義、lambda表達式,以及並發支持)。挑戰在於高效地運用這些特性,從而使你的軟件具備正確性、高效率、可維護性和可移植性。這正是本書意欲達成的定位。它描述的正是使用C++11和C++14(即現代C++)來編寫真正很好的軟件之道。涵蓋以下主題:大括號初始化、noexcept規格、完美轉發,以及智能指針的make函數的優缺點。std::move、std::forward、右值引用和萬能引用之間的聯繫。編寫整潔、正確,以及高效的lambda表達式的方法。std::atomic和volatile有怎樣的區別,它們分別用於什麼場合,以及它們和C++的並發API有何聯繫。“舊”C++程序設計(即C++98)中的實戰要求在現代C++的軟件開發中作出哪些修訂。 (美)斯科特·邁耶(Scott Meyers) 著;高博 譯 著 20多年來,斯科特·邁耶的Effective C++叢書(包括《Effective C++》、《More Effecitve C++》和《Effective STL》)已經為C++程序設計指南的業界設立標杆。他清晰明了引人入勝的、對復雜技術材料進行條分縷析的闡釋為他贏得了世界範圍內的稱譽,也使他成為一名廣受歡迎的培訓師、咨詢顧問和會議講師。他擁有布朗大學計算機科學專業的博士學位。 緒論如果你是一名身經百戰的C++ 程序員,又恰好和我有那麼點兒氣味相投,你會在和C++11 最初打上交道時暗忖:“嗯,我明白,這還是C++,錦上添花而已。”但隨著學習的深入,你會對變化之縱深喫驚不小:a u t o 聲明式、基於範圍的循環、lambda表達式,以及右值引用。這些已經改變了C++ 的面貌,這還沒有把全新的並發特性計算以內。隨之而來的還有諸多習慣用法的改變。0 和typedef 已經過時,nullptr 和別名聲明式大行其道。枚舉量如今要限定作用域。相對於內建指針而言,智能指針成為優選。在正常情況下,對像的移動語義要好過復制語義。C++11 已有大量內容要學習,C++14 自然更不必說。更關鍵的是,想要高效地利用這些新能力,任重而道遠。如果你僅僅想了解“現代”C++特性的基本信息,資料俯拾皆是。但如果你想要尋覓如何采用這些特性去創建正確、高效、易維護、可移植的軟件,恐怕就沒那麼等 ![](https://img10.360buyimg.com/imgzone/jfs/t1/147514/7/5440/73116/5f34a3beE3ba58783/f5b2391383f5625c.jpg)
" |