Effective Modern C++(中文版)

2021-05-21 21:50 更新

Effective Modern C++(中文版)

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

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


點(diǎn)此購(gòu)買


編輯推薦

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

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


內(nèi)容簡(jiǎn)介

涵蓋以下主題:

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

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

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

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

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


作者簡(jiǎn)介

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


精彩書評(píng)

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

——Herb Sutter

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

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

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

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

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

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

——Nevin Liber DRW,交易集團(tuán)公司高級(jí)軟件工程師

C 的締造者 Bjarne Stroustrup 如是說:“C 11 感覺像是一種新的語言。”

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

Scott Meyers 出品,必屬精品!

——Cassio Neri FX 定量分析師,勞埃德銀行集團(tuán)

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

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

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

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

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

—— Damien Watkins CSIRO,計(jì)算軟件工程組組長(zhǎng)

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

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

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

—— Rob Stewart Boost Steering,委員會(huì)成員(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)的型別不符合要求時(shí),使用帶顯式型別的初始化物習(xí)慣用法 46

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

條款7:在創(chuàng)建對(duì)象時(shí)注意區(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ù)不會(huì)發(fā)射異常,就為其加上noexcept聲明 89

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

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

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

第4章 智能指針 113

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

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

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

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

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

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

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

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

條款25:針對(duì)右值引用實(shí)施std::move,針對(duì)萬能引用實(shí)施std::forward 161

條款26:避免依萬能引用型別進(jìn)行重載 169

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

條款28:理解引用折疊 187

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

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

第6章 lambda表達(dá)式 204

條款31:避免默認(rèn)捕獲模式 205

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

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

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

第7章 并發(fā)API 228

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

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

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

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

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

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

第8章 微調(diào) 263

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

其按值傳遞 263

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


點(diǎn)此購(gòu)買


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)