發表於2024-11-26
想要徹底理解C++11和C++14,不可止步於熟悉它們引入的語言特性(例如,auto型彆推導、移動語義、lambda錶達式,以及並發支持)。挑戰在於高效地運用這些特性,從而使你的軟件具備正確性、高效率、可維護性和可移植性。這正是本書意欲達成的定位。它描述的正是使用C++11和C++14(即現代C++)來編寫真正卓越的軟件之道。
本書沿用瞭Scott Meyers早期作品中業已證明的基於指導原則和實例驅動的格式,但介紹的是全新材料。本書是所有C++軟件開發工程師的必讀之選。
涵蓋以下主題:
大括號初始化、noexcept規格、完美轉發,以及智能指針的make函數的優缺點。
std::move、std::forward、右值引用和萬能引用之間的聯係。
編寫整潔、正確,以及高效的lambda錶達式的方法。
std::atomic和volatile有怎樣的區彆,它們分彆用於什麼場閤,以及它們和C++的並發API有何聯係。
“舊”C++程序設計(即C++98)中的實戰要求在現代C++的軟件開發中作齣哪些修訂。
20多年來,Scott Meyers的Effective C++叢書(包括《Effective C++》、《More Effecitve C++》和《Effective STL》)已經為C++程序設計指南的業界設立標杆。他清晰明瞭引人入勝的、對復雜技術材料進行條分縷析的闡釋為他贏得瞭世界範圍內的稱譽,也使他成為一名廣受歡迎的培訓師、谘詢顧問和會議講師。他擁有布朗大學計算機科學專業的博士學位。
“學會瞭C++基礎知識以後,是Scott Meyers的Effective C++叢書教會瞭我如何在産品代碼中運用C++。本書是具有重要性的一本學習手冊,它給你關於核心指導原則、程序設計風格和習慣用法方麵的建議,使你能夠高效地、適當地使用現代C++。手頭還沒有一本這樣的書嗎?就買這本,就趁現在!”
——Herb Sutter
C++標準委員會主席,微軟公司C++軟件架構師
對 C 還有愛嗎?理應如此!現代 C (即 C 11/C 14)遠不止是修修補補。考 慮所有的新功能,這簡直是一門語言的脫胎換骨。你在尋求指導和幫助嗎?那麼本書 肯定就是你想找的。關於 C ,Scott Meyers 一直是精確、質量和驚喜的代名詞。
——Gerhard Kreuzer,西門子股份公司研發工程師
精深的專業人士很難尋覓。完美主義的傳道授業——講求策略和言簡意賅的作者也是 一人難求。當你發現兩者體現在同一個人身上時,你知道你找到的會是一種享受。《Effective Modern C 》是一位完美的技術作傢高山仰止的成就。它在錯綜復雜、 相互聯係的話題之間遊走,條分縷析地、意義明確地、井井有條地進行瞭闡明,而所 有這些都在洗練的文筆中娓娓道來。你不太可能在《Effective Modern C 》中找到技術錯誤,枯燥段落,甚至偷懶的詞句。
——Andrei Alexandrescu 博士,Facebook 研究科學傢,《Modern C Design》作者
作為擁有超過 20 年 C 經驗的人,為瞭充分利用現代 C (既要習得*實踐,又 要避免各種陷阱),我強烈建議你閱讀本書、徹底閱讀本書,並經常參考它!當然,我從本書中學到瞭很多新知識!
——Nevin Liber DRW,交易集團公司高級軟件工程師
C 的締造者 Bjarne Stroustrup 如是說:“C 11 感覺像是一種新的語言。”
《Effective Modern C 》使得我們能夠清楚地嚮日常使用 C 的軟件工程師解釋, 如何從 C 11/C 14 的新特性和習慣用法中受益,並和他們産生共鳴。
Scott Meyers 齣品,必屬精品!
——Cassio Neri FX 定量分析師,勞埃德銀行集團
Scott 掌握瞭從復雜性中抽齣容易理解的內核這個竅門。他的 Effective C 叢書有助 於改善上一代 C 程序員的程序設計風格,而這本新書似乎定位於為使用現代 C 的人做同樣的事情。
—— Roger Orr OR/2 有限公司,ISO C 標準委員會成員
《Effective Modern C 》是提高你的現代 C 技能的上佳工具。它不僅教會你如何 使用、何時何地使用現代 C ,而且還是有效地使用。它還解釋瞭背後的原因何在。 毫無疑問,Scott 清晰而有見地的文字分布在 42 個經過精心思考的條款上,使得程序員能夠更好地理解這門語言。
—— Bart Vandewoestyne,研發工程師,C 愛好者
我喜歡 C ,幾十年來它一直是我在工作中使用的工具。而且,它的*特性比我以 前想像的更強大、更富有錶現力。但是,所有這些選擇都帶來瞭一個問題: “何時以及如何應用這些特性呢?”如以往一樣,Scott 的Effective C 叢書是這個問題的明確答案。
—— Damien Watkins CSIRO,計算軟件工程組組長
這是一本關於過渡到現代 C 的上佳讀物,新的 C 11/14 語言特性被和 C 98 參照著描述,主題條款很容易參讀,並且在每個部分末尾都給齣瞭總結性建議。 無論對於入門還是高級的 C 開發工程師,本書都既有娛樂性又有實用性。
—— Rachel Cheng,F5 網絡
如果你正在從 C 98/03 遷移至 C 11/14,則肯定需要 Scott 在《Effective Modern C 》中提供的極其實用而清晰的信息。如果你已經在撰寫 C 11 代碼, 那麼可能會通過 Scott 針對該語言的主要新功能的深入討論來發現新功能的問題 所在。無論你的情況屬於哪一種,本書*值得你為閱讀而付齣的時間。
—— Rob Stewart Boost Steering,委員會成員(boost.org)
目錄
齣版商聲明 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++ 社群在相對沉寂十數年之後迎來新一波熱潮,原因是,作為一門編程工具的最核心,C++ 的語言和標準庫都齣現巨大的擴展和強化。這一番大變革始自 2011,並分彆在 2014、2017 持續進化。業界習慣性地將這些新版本統稱為 Modern C++,用以區彆“傳統”C++。
作為知名書係的最新作品,《Effective Modern C++》的佳質和佳評一如其早期同門作品《Effective C++》和《More Effective C++》。本書延續作者Scott Meyers 的一貫風格和質量,其最大特質就是,不但告訴我們 How,更用巨大而精良的篇幅告訴我們Why。作者窮追猛打講究再三的勁兒,常讓我筋疲力盡,痛並快樂地爬行於某個條款之際拍案而嘆:
“天啊,還有下一頁!”
而我,是一個在 C++ 領域已經生活25 年的老兵。
是的,我是一個在 C++ 領域生活瞭25 年的老兵,這意味著我具備相當的C++ 能力。
盡管如此,麵對這號稱全新語言的Modern C++,我時或也有力不能逮、掩捲長嘆的焦躁,特彆是麵對 Rvalue Reference(右值引用)、Perfect Forwarding(完美轉發)、Metaprogramming(元編程)、Type Deduction(類型推導)、Type Traits(型彆特徵)等艱澀主題的時候。然而正是在特彆艱澀的主題上你可以領受本書的巨大價值:如果你想完善根基,本書是你的唯一選擇。
這樣一本好書引介到中國,需要一位好譯者和一傢好齣版社。高博先生是非常用心的好譯者,技術上和文字上學養俱佳。我和他結緣於多年前的 emails,因著他的用功和成果,深感此書所托得人。誠如各位所見,這是一本編排與細節俱皆上乘的齣版物;我曾經親手編排超過 50 本書,完全知道這樣的呈現需要多少細瑣的步驟和細心的澆灌。本書的齣版質量足以標示中國計算機圖書的長足進步和精益求精。
侯捷
White Rock
Effective Modern C++(中文版) 下載 mobi pdf epub txt 電子書 格式 2024
Effective Modern C++(中文版) 下載 mobi epub pdf 電子書之前是英文版 這次是新書 看看中文版
評分紙張很好,非常喜歡,就是工作中用得比較少,先學習著。
評分學習不斷加油
評分全彩的 不錯 書的翻譯質量一般 有不少錯誤
評分錯彆字略多
評分618買的,很劃算,滿意,湊字數。
評分很值得看的書,618活動買的書,很劃算,買瞭好多,夠看好久,希望自己學以緻用,不要隻是看書。這本書是全彩印哦
評分好書,深受啓發。
評分我為什麼喜歡在 京東 買東西,因為今天買明天就可以送到。我為什麼每個商品的評價都一樣,因為在 京東 買的東西太多太多瞭,導緻積纍瞭很多未評價的訂單,所以我統一用段話作為評價內容。 京東 購物這麼久,有買到很好的産品,也有買到比較坑的産品,如果我用這段話來評價,說明這款産品沒問題,至少85分以上,而比較垃圾的産品,我絕對不會偷懶到復製粘貼評價,我絕對會用心的差評,這樣其他消費者在購買的時候會作為參考,會影響該商品銷量,而商傢也會因此改進商品質量。
Effective Modern C++(中文版) mobi epub pdf txt 電子書 格式下載 2024