Effective Modern C++(中文版)

2021-05-21 21:50 更新

Effective Modern C++(中文版)

[美] 斯科特·邁耶(Scott Meyers) 著,高博 譯

  • 出版社: 中國電力出版社
  • ISBN:9787519817749
  • 版次:1
  • 商品編碼:12348026
  • 品牌:中國電力出版社(zhongguodianlichubanshe)
  • 包裝:平裝
  • 開本:16
  • 出版時間:2018-04-01
  • 用紙:膠版紙
  • 頁數(shù):281
  • 字數(shù):367
  • 審圖號:TP312.8


點此購買


編輯推薦

想要徹底理解C++11和C++14,不可止步于熟悉它們引入的語言特性(例如,auto型別推導(dǎo)、移動語義、lambda表達式,以及并發(fā)支持)。挑戰(zhàn)在于高效地運用這些特性,從而使你的軟件具備正確性、高效率、可維護性和可移植性。這正是本書意欲達成的定位。它描述的正是使用C++11和C++14(即現(xiàn)代C++)來編寫真正卓越的軟件之道。

本書沿用了Scott Meyers早期作品中業(yè)已證明的基于指導(dǎo)原則和實例驅(qū)動的格式,但介紹的是全新材料。本書是所有C++軟件開發(fā)工程師的必讀之選。


內(nèi)容簡介

涵蓋以下主題:

大括號初始化、noexcept規(guī)格、完美轉(zhuǎn)發(fā),以及智能指針的make函數(shù)的優(yōu)缺點。

std::move、std::forward、右值引用和萬能引用之間的聯(lián)系。

編寫整潔、正確,以及高效的lambda表達式的方法。

std::atomic和volatile有怎樣的區(qū)別,它們分別用于什么場合,以及它們和C++的并發(fā)API有何聯(lián)系。

“舊”C++程序設(shè)計(即C++98)中的實戰(zhàn)要求在現(xiàn)代C++的軟件開發(fā)中作出哪些修訂。


作者簡介

20多年來,Scott Meyers的Effective C++叢書(包括《Effective C++》、《More Effecitve C++》和《Effective STL》)已經(jīng)為C++程序設(shè)計指南的業(yè)界設(shè)立標(biāo)桿。他清晰明了引人入勝的、對復(fù)雜技術(shù)材料進行條分縷析的闡釋為他贏得了世界范圍內(nèi)的稱譽,也使他成為一名廣受歡迎的培訓(xùn)師、咨詢顧問和會議講師。他擁有布朗大學(xué)計算機科學(xué)專業(yè)的博士學(xué)位。


精彩書評

“學(xué)會了C++基礎(chǔ)知識以后,是Scott Meyers的Effective C++叢書教會了我如何在產(chǎn)品代碼中運用C++。本書是具有重要性的一本學(xué)習(xí)手冊,它給你關(guān)于核心指導(dǎo)原則、程序設(shè)計風(fēng)格和習(xí)慣用法方面的建議,使你能夠高效地、適當(dāng)?shù)厥褂矛F(xiàn)代C++。手頭還沒有一本這樣的書嗎?就買這本,就趁現(xiàn)在!”

——Herb Sutter

C++標(biāo)準(zhǔn)委員會主席,微軟公司C++軟件架構(gòu)師

對 C 還有愛嗎?理應(yīng)如此!現(xiàn)代 C (即 C 11/C 14)遠不止是修修補補???慮所有的新功能,這簡直是一門語言的脫胎換骨。你在尋求指導(dǎo)和幫助嗎?那么本書 肯定就是你想找的。關(guān)于 C ,Scott Meyers 一直是精確、質(zhì)量和驚喜的代名詞。

——Gerhard Kreuzer,西門子股份公司研發(fā)工程師

精深的專業(yè)人士很難尋覓。完美主義的傳道授業(yè)——講求策略和言簡意賅的作者也是 一人難求。當(dāng)你發(fā)現(xiàn)兩者體現(xiàn)在同一個人身上時,你知道你找到的會是一種享受?!禘ffective Modern C 》是一位完美的技術(shù)作家高山仰止的成就。它在錯綜復(fù)雜、 相互聯(lián)系的話題之間游走,條分縷析地、意義明確地、井井有條地進行了闡明,而所 有這些都在洗練的文筆中娓娓道來。你不太可能在《Effective Modern C 》中找到技術(shù)錯誤,枯燥段落,甚至偷懶的詞句。

——Andrei Alexandrescu 博士,F(xiàn)acebook 研究科學(xué)家,《Modern C Design》作者

作為擁有超過 20 年 C 經(jīng)驗的人,為了充分利用現(xiàn)代 C (既要習(xí)得*實踐,又 要避免各種陷阱),我強烈建議你閱讀本書、徹底閱讀本書,并經(jīng)常參考它!當(dāng)然,我從本書中學(xué)到了很多新知識!

——Nevin Liber DRW,交易集團公司高級軟件工程師

C 的締造者 Bjarne Stroustrup 如是說:“C 11 感覺像是一種新的語言?!?/p>

《Effective Modern C 》使得我們能夠清楚地向日常使用 C 的軟件工程師解釋, 如何從 C 11/C 14 的新特性和習(xí)慣用法中受益,并和他們產(chǎn)生共鳴。

Scott Meyers 出品,必屬精品!

——Cassio Neri FX 定量分析師,勞埃德銀行集團

Scott 掌握了從復(fù)雜性中抽出容易理解的內(nèi)核這個竅門。他的 Effective C 叢書有助 于改善上一代 C 程序員的程序設(shè)計風(fēng)格,而這本新書似乎定位于為使用現(xiàn)代 C 的人做同樣的事情。

—— Roger Orr OR/2 有限公司,ISO C 標(biāo)準(zhǔn)委員會成員

《Effective Modern C 》是提高你的現(xiàn)代 C 技能的上佳工具。它不僅教會你如何 使用、何時何地使用現(xiàn)代 C ,而且還是有效地使用。它還解釋了背后的原因何在。 毫無疑問,Scott 清晰而有見地的文字分布在 42 個經(jīng)過精心思考的條款上,使得程序員能夠更好地理解這門語言。

—— Bart Vandewoestyne,研發(fā)工程師,C 愛好者

我喜歡 C ,幾十年來它一直是我在工作中使用的工具。而且,它的*特性比我以 前想像的更強大、更富有表現(xiàn)力。但是,所有這些選擇都帶來了一個問題: “何時以及如何應(yīng)用這些特性呢?”如以往一樣,Scott 的Effective C 叢書是這個問題的明確答案。

—— Damien Watkins CSIRO,計算軟件工程組組長

這是一本關(guān)于過渡到現(xiàn)代 C 的上佳讀物,新的 C 11/14 語言特性被和 C 98 參照著描述,主題條款很容易參讀,并且在每個部分末尾都給出了總結(jié)性建議。 無論對于入門還是高級的 C 開發(fā)工程師,本書都既有娛樂性又有實用性。

—— Rachel Cheng,F(xiàn)5 網(wǎng)絡(luò)

如果你正在從 C 98/03 遷移至 C 11/14,則肯定需要 Scott 在《Effective Modern C 》中提供的極其實用而清晰的信息。如果你已經(jīng)在撰寫 C 11 代碼, 那么可能會通過 Scott 針對該語言的主要新功能的深入討論來發(fā)現(xiàn)新功能的問題 所在。無論你的情況屬于哪一種,本書*值得你為閱讀而付出的時間。

—— Rob Stewart Boost Steering,委員會成員(boost.org)


目錄

目錄

出版商聲明 1

致謝 3

緒論 7

第1章 型別推導(dǎo) 15

條款1:理解模板型別推導(dǎo) 15

條款2:理解auto型別推導(dǎo) 23

條款3:理解decltype 28

條款4:掌握查看型別推導(dǎo)結(jié)果的方法 35

第2章 auto 41

條款5:優(yōu)先選用auto,而非顯式型別聲明 41

條款6:當(dāng)auto推導(dǎo)的型別不符合要求時,使用帶顯式型別的初始化物習(xí)慣用法 46

第3章 轉(zhuǎn)向現(xiàn)代C++ 52

條款7:在創(chuàng)建對象時注意區(qū)分()和{} 52

條款8:優(yōu)先選用nullptr,而非0或NULL 61

條款9:優(yōu)先選用別名聲明,而非typedef 64

條款10:優(yōu)先選用限定作用域的枚舉型別,而非不限作用域的枚舉型別 68

條款11:優(yōu)先選用刪除函數(shù),而非private未定義函數(shù) 74

條款12:為意在改寫的函數(shù)添加override聲明 79

條款13:優(yōu)先選用const_iterator,而非iterator 85

條款14:只要函數(shù)不會發(fā)射異常,就為其加上noexcept聲明 89

條款15:只要有可能使用constexpr,就使用它 95

條款16:保證const成員函數(shù)的線程安全性 101

條款17:理解特種成員函數(shù)的生成機制 106

第4章 智能指針 113

條款18:使用std::unique_ptr管理具備專屬所有權(quán)的資源 115

條款19:使用std::shared_ptr管理具備共享所有權(quán)的資源 120

條款20:對于類似std::shared_ptr但有可能空懸的指針使用std::weak_ptr 129

條款21:優(yōu)先選用std::make_unique和std::make_shared,而非直接使用new 133

條款22:使用Pimpl習(xí)慣用法時,將特殊成員函數(shù)的定義放到實現(xiàn)文件中 141

第5章 右值引用、移動語義和完美轉(zhuǎn)發(fā) 150

條款23:理解std::move和std::forward 151

條款24:區(qū)分萬能引用和右值引用 156

條款25:針對右值引用實施std::move,針對萬能引用實施std::forward 161

條款26:避免依萬能引用型別進行重載 169

條款27:熟悉依萬能引用型別進行重載的替代方案 175

條款28:理解引用折疊 187

條款29:假定移動操作不存在、成本高、未使用 193

條款30:熟悉完美轉(zhuǎn)發(fā)的失敗情形 196

第6章 lambda表達式 204

條款31:避免默認捕獲模式 205

條款32:使用初始化捕獲將對象移入閉包 212

條款33:對auto&&型別的形參使用decltype,以std::forward之 217

條款34:優(yōu)先選用lambda式,而非std::bind 220

第7章 并發(fā)API 228

條款35:優(yōu)先選用基于任務(wù)而非基于線程的程序設(shè)計 228

條款36:如果異步是必要的,則指定std::launch::async 232

條款37:使std::thread型別對象在所有路徑皆不可聯(lián)結(jié) 236

條款38:對變化多端的線程句柄析構(gòu)函數(shù)行為保持關(guān)注 243

條款39:考慮針對一次性事件通信使用以void為模板型別實參的期值 247

條款40:對并發(fā)使用std::atomic,對特種內(nèi)存使用volatile 254

第8章 微調(diào) 263

條款41:針對可復(fù)制的形參,在移動成本低并且一定會被復(fù)制的前提下,考慮將

其按值傳遞 263

條款42:考慮置入而非插入 273


點此購買


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號