注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)C++20高級編程(第5版)

C++20高級編程(第5版)

C++20高級編程(第5版)

定 價(jià):¥228.00

作 者: [比]馬克·格雷戈勒(Marc Gregoire) 著,程序喵大人 惠惠 墨梵 譯
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787302602132 出版時(shí)間: 2022-04-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 1000 字?jǐn)?shù):  

內(nèi)容簡介

  主要內(nèi)容● 演示如何用C 思考,以更大限度地發(fā)揮語言的深遠(yuǎn)能力,并開發(fā)有效的解決方案● 解釋難以理解的原理,進(jìn)行陷阱警告,分享提高效率和性能的提示、技巧和變通方法● 呈現(xiàn)各種具有挑戰(zhàn)性的、真實(shí)世界的程序,其用途廣泛,足以融入任何項(xiàng)目● 重點(diǎn)介紹C 20的新特性,包括模塊、概念、三向比較、立即執(zhí)行函數(shù)等● 深入討論新的C 20標(biāo)準(zhǔn)庫功能,例如文本格式化、范圍、原子智能指針、同步原語、日期、時(shí)區(qū)等

作者簡介

  Marc Gregoire是一名軟件工程師,畢業(yè)于比利時(shí)魯汶大學(xué),擁有計(jì)算機(jī)科學(xué)工程碩士學(xué)位。之后,他在魯汶大學(xué)又獲得人工智能專業(yè)的優(yōu)等碩士學(xué)位。完成學(xué)業(yè)后,他開始為軟件咨詢公司Ordina Belgium工作。他曾在Siemens 和Nokia Siemens Networks為大型電信運(yùn)營商提供有關(guān)在Solaris上運(yùn)行關(guān)鍵2G和3G軟件的咨詢服務(wù)。這份工作要求與來自南美、美國、歐洲、中東、非洲和亞洲的國際團(tuán)隊(duì)合作。Marc目前擔(dān)任Nikon Metrology(www.nikonmetrology.com)的軟件架構(gòu)師;Nikon Metrology是Nikon的一個(gè)部門,是精密光學(xué)儀器、X光機(jī)等設(shè)備和X光、CT和3D掃描解決方案的領(lǐng)先供應(yīng)商。Marc的主要技術(shù)專長是C/C ,特別是Microsoft VC 和MFC框架。他還擅長在Windows和Linux平臺上開發(fā)24×7運(yùn)行的C 程序,例如KNX/EIB家庭自動(dòng)化監(jiān)控軟件。除了C/C 之外,Marc還喜歡C#。 2007年4月,他憑借Visual C 方面的專業(yè)技能,獲得了微軟年度MVP稱號。Marc還是比利時(shí)C 用戶組(www.becpp.org)的創(chuàng)始人,是C Standard Library Quick Reference 第1版和第2版(Apress)的共同作者,以及多家出版社出版的多種書籍的技術(shù)編輯,是C 大會(huì)CppCon的活躍演講者。

圖書目錄

第I部分  專業(yè)的C 簡介
第1章  C 和標(biāo)準(zhǔn)庫速成   3
1.1  C 速成   3
1.1.1  小程序“Hello World”   4
1.1.2  名稱空間   7
1.1.3  字面量   9
1.1.4  變量   9
1.1.5  運(yùn)算符   12
1.1.6  枚舉類型   14
1.1.7  結(jié)構(gòu)體   16
1.1.8  條件語句   17
1.1.9  條件運(yùn)算符   19
1.1.10  邏輯比較運(yùn)算符   20
1.1.11  三向比較運(yùn)算符   21
1.1.12  函數(shù)   22
1.1.13  屬性   23
1.1.14  C風(fēng)格的數(shù)組   26
1.1.15  std::array   27
1.1.16  std::vector   28
1.1.17  std::pair   28
1.1.18  std::optional   29
1.1.19  結(jié)構(gòu)化綁定   30
1.1.20  循環(huán)   30
1.1.21  初始化列表   31
1.1.22  C 中的字符串   32
1.1.23  作為面向?qū)ο笳Z言的C   32
1.1.24  作用域解析   35
1.1.25  統(tǒng)一初始化   36
1.1.26  指針和動(dòng)態(tài)內(nèi)存   39
1.1.27  const的用法   43
1.1.28  constexpr關(guān)鍵字   45
1.1.29  consteval關(guān)鍵字   46
1.1.30  引用   47
1.1.31  const_cast()   55
1.1.32  異常   56
1.1.33  類型別名   56
1.1.34  類型定義   57
1.1.35  類型推斷   58
1.1.36  標(biāo)準(zhǔn)庫   60
1.2  個(gè)大型的C 程序   61
1.2.1  雇員記錄系統(tǒng)   61
1.2.2  Employee類   61
1.2.3  Database類   64
1.2.4  用戶界面   67
1.2.5  評估程序   69
1.3  本章小結(jié)   69
1.4  練習(xí)   69
第2章  使用string和string_view   71
2.1  動(dòng)態(tài)字符串   71
2.1.1  C風(fēng)格字符串   71
2.1.2  字符串字面量   73
2.1.3  C std::string類   75
2.1.4  數(shù)值轉(zhuǎn)換   78
2.1.5  std::string_view類   81
2.1.6  非標(biāo)準(zhǔn)字符串   84
2.2  字符串格式化   84
2.2.1  格式說明符   85
2.2.2  格式說明符錯(cuò)誤   87
2.2.3  支持自定義類型   87
2.3  本章小結(jié)   90
2.4  練習(xí)   90
第3章  編碼風(fēng)格   91
3.1  良好外觀的重要性   91
3.1.1  事先考慮   91
3.1.2  良好風(fēng)格的元素   92
3.2  為代碼編寫文檔   92
3.2.1  使用注釋的原因   92
3.2.2  注釋的風(fēng)格   96
3.3  分解   99
3.3.1  通過重構(gòu)分解   100
3.3.2  通過設(shè)計(jì)分解   101
3.3.3  本書中的分解   101
3.4  命名   101
3.4.1  選擇恰當(dāng)?shù)拿Q   101
3.4.2  命名約定   102
3.5  使用具有風(fēng)格的語言特性   103
3.5.1  使用常量   104
3.5.2  使用引用代替指針   104
3.5.3  使用自定義異常   104
3.6  格式   105
3.6.1  關(guān)于大括號對齊的爭論   105
3.6.2  關(guān)于空格和圓括號的爭論   106
3.6.3  空格、制表符、換行符   106
3.7  風(fēng)格的挑戰(zhàn)   107
3.8  本章小結(jié)   107
3.9  練習(xí)   107
第II部分  專業(yè)的C 軟件設(shè)計(jì)
第4章  設(shè)計(jì)專業(yè)的C 程序   113
4.1  程序設(shè)計(jì)概述   113
4.2  程序設(shè)計(jì)的重要性   114
4.3  C 設(shè)計(jì)   116
4.4  C 設(shè)計(jì)的兩個(gè)原則   116
4.4.1  抽象   116
4.4.2  重用   118
4.5  重用現(xiàn)有代碼   119
4.5.1  關(guān)于術(shù)語的說明   119
4.5.2  決定是否重用代碼   120
4.5.3  重用代碼的指導(dǎo)原則   121
4.6  設(shè)計(jì)一個(gè)國際象棋程序   127
4.6.1  需求   127
4.6.2  設(shè)計(jì)步驟   127
4.7  本章小結(jié)   132
4.8  練習(xí)   133
第5章  面向?qū)ο笤O(shè)計(jì)   135
5.1  過程化的思考方式   135
5.2  面向?qū)ο笏枷?  136
5.2.1  類   136
5.2.2  組件   136
5.2.3  屬性   136
5.2.4  行為   137
5.2.5  綜合考慮   137
5.3  生活在類的世界里   138
5.3.1  過度使用類   138
5.3.2  過于通用的類   139
5.4  類之間的關(guān)系   139
5.4.1  “有一個(gè)”關(guān)系   139
5.4.2  “是一個(gè)”關(guān)系(繼承)   140
5.4.3  “有一個(gè)”與“是一個(gè)”的
區(qū)別   142
5.4.4  not-a關(guān)系   144
5.4.5  層次結(jié)構(gòu)   145
5.4.6  多重繼承   146
5.4.7  混入類   147
5.5  本章小結(jié)   147
5.6  練習(xí)   148
第6章  設(shè)計(jì)可重用代碼   149
6.1  重用哲學(xué)   149
6.2  如何設(shè)計(jì)可重用代碼   150
6.2.1  使用抽象   150
6.2.2  構(gòu)建理想的重用代碼   151
6.2.3  設(shè)計(jì)有用的接口   157
6.2.4  設(shè)計(jì)成功的抽象   162
6.2.5  SOLID原則   162
6.3  本章小結(jié)   163
6.4  練習(xí)   163
第III部分  C 編碼方法
第7章  內(nèi)存管理   167
7.1  使用動(dòng)態(tài)內(nèi)存   167
7.1.1  如何描繪內(nèi)存   168
7.1.2  分配和釋放   169
7.1.3  數(shù)組   170
7.1.4  使用指針   177
7.2  數(shù)組-指針的對偶性   178
7.2.1  數(shù)組就是指針   178
7.2.2  并非所有指針都是數(shù)組   180
7.3  底層內(nèi)存操作   180
7.3.1  指針運(yùn)算   180
7.3.2  自定義內(nèi)存管理   181
7.3.3  垃圾回收   181
7.3.4  對象池   182
7.4  常見的內(nèi)存陷阱   182
7.4.1  數(shù)據(jù)緩沖區(qū)分配不足以及
內(nèi)存訪問越界   182
7.4.2  內(nèi)存泄漏   183
7.4.3  雙重釋放和無效指針   186
7.5  智能指針   186
7.5.1  unique_ptr   187
7.5.2  shared_ptr   190
7.5.3  weak_ptr   193
7.5.4  向函數(shù)傳遞參數(shù)   193
7.5.5  從函數(shù)中返回   194
7.5.6  enable_shared_from_this   194
7.5.7  過時(shí)的、移除的auto_ptr   195
7.6  本章小結(jié)   195
7.7  練習(xí)   195
第8章  類和對象   197
8.1  電子表格示例介紹   197
8.2  編寫類   198
8.2.1  類定義   198
8.2.2  定義方法   200
8.2.3  使用對象   203
8.3  對象的生命周期   205
8.3.1  創(chuàng)建對象   205
8.3.2  銷毀對象   219
8.3.3  對象賦值   220
8.3.4  編譯器生成的拷貝構(gòu)造函數(shù)和
拷貝賦值運(yùn)算符   223
8.3.5  復(fù)制和賦值的區(qū)別   223
8.4  本章小結(jié)   224
8.5  練習(xí)   225
第9章  精通類和對象   227
9.1  友元   227
9.2  對象中的動(dòng)態(tài)內(nèi)存分配   228
9.2.1  Spreadsheet類   228
9.2.2  使用析構(gòu)函數(shù)釋放內(nèi)存   231
9.2.3  處理復(fù)制和賦值   231
9.2.4  使用移動(dòng)語義處理移動(dòng)   237
9.2.5  零規(guī)則   246
9.3  與方法有關(guān)的更多內(nèi)容   246
9.3.1  static方法   246
9.3.2  const方法   247
9.3.3  方法重載   248
9.3.4  內(nèi)聯(lián)方法   251
9.3.5  默認(rèn)參數(shù)   252
9.4  不同的數(shù)據(jù)成員類型   252
9.4.1  靜態(tài)數(shù)據(jù)成員   253
9.4.2  const static數(shù)據(jù)成員   254
9.4.3  引用數(shù)據(jù)成員   255
9.5  嵌套類   256
9.6  類內(nèi)的枚舉類型   257
9.7  運(yùn)算符重載   258
9.7.1  示例:為SpreadsheetCell
實(shí)現(xiàn)加法   258
9.7.2  重載算術(shù)運(yùn)算符   261
9.7.3  重載比較運(yùn)算符   262
9.7.4  創(chuàng)建具有運(yùn)算符重載的類型   266
9.8  創(chuàng)建穩(wěn)定的接口   266
9.9  本章小結(jié)   270
9.10  練習(xí)   270
第10章  揭秘繼承技術(shù)   271
10.1  使用繼承構(gòu)建類   271
10.1.1  擴(kuò)展類   272
10.1.2  重寫方法   275
10.2  使用繼承重用代碼   282
10.2.1  WeatherPrediction類   282
10.2.2  在派生類中添加功能   283
10.2.3  在派生類中替換功能   284
10.3  利用父類   285
10.3.1  父類構(gòu)造函數(shù)   285
10.3.2  父類的析構(gòu)函數(shù)   286
10.3.3  使用父類方法   287
10.3.4  向上轉(zhuǎn)型和向下轉(zhuǎn)型   289
10.4  繼承與多態(tài)性   290
10.4.1  回到電子表格   290
10.4.2  設(shè)計(jì)多態(tài)性的電子表格
單元格   291
10.4.3  SpreadsheetCell基類   291
10.4.4  獨(dú)立的派生類   293
10.4.5  利用多態(tài)性   294
10.4.6  考慮將來   295
10.5  多重繼承   296
10.5.1  從多個(gè)類繼承   296
10.5.2  名稱沖突和歧義基類   297
10.6  有趣而晦澀的繼承問題   300
10.6.1  修改重寫方法的返回類型   300
10.6.2  派生類中添加虛基類方法的
重載   301
10.6.3  繼承的構(gòu)造函數(shù)   302
10.6.4  重寫方法時(shí)的特殊情況   306
10.6.5  派生類中的復(fù)制構(gòu)造函數(shù)和
賦值運(yùn)算符   312
10.6.6  運(yùn)行期類型工具   313
10.6.7  非public繼承   314
10.6.8  虛基類   315
10.7  類型轉(zhuǎn)換   316
10.7.1  static_cast()   316
10.7.2  reinterpret_cast()   317
10.7.3  std::bit_cast()   318
10.7.4  dynamic_cast()   318
10.7.5  類型轉(zhuǎn)換小結(jié)   319
10.8  本章小結(jié)   319
10.9  練習(xí)   320
第11章  零碎的工作   321
11.1  模塊   321
11.1.1  模塊接口文件   322
11.1.2  模塊實(shí)現(xiàn)文件   324
11.1.3  從實(shí)現(xiàn)中分離接口   325
11.1.4  可見性和可訪問性   326
11.1.5  子模塊   326
11.1.6  模塊劃分   327
11.1.7  頭文件單元   329
11.2  頭文件   330
11.2.1  重復(fù)定義   330
11.2.2  循環(huán)依賴   330
11.2.3  查詢頭文件是否存在   331
11.3  核心語言特性的特性測試宏   331
11.4  STATIC關(guān)鍵字   332
11.4.1  靜態(tài)數(shù)據(jù)成員和方法   332
11.4.2  靜態(tài)鏈接   332
11.4.3  函數(shù)中的靜態(tài)變量   334
11.4.4  非局部變量的初始化順序   335
11.4.5  非局部變量的銷毀順序   335
11.5  C的實(shí)用工具   335
11.5.1  變長參數(shù)列表   336
11.5.2  預(yù)處理器宏   337
11.6  本章小結(jié)   338
11.7  練習(xí)   338
第12章  利用模板編寫泛型代碼   341
12.1  模板概述   341
12.2  類模板   342
12.2.1  編寫類模板   342
12.2.2  編譯器處理模板的原理   349
12.2.3  將模板代碼分布到多個(gè)
文件中   350
12.2.4  模板參數(shù)   351
12.2.5  方法模板   355
12.2.6  類模板的特化   359
12.2.7  從類模板派生   361
12.2.8  繼承還是特化   362
12.2.9  模板別名   362
12.3  函數(shù)模板   363
12.3.1  函數(shù)模板的重載   364
12.3.2  類模板的友元函數(shù)模板   365
12.3.3  對模板參數(shù)推導(dǎo)的更多介紹   366
12.3.4  函數(shù)模板的返回類型   367
12.4  簡化函數(shù)模板的語法   368
12.5  變量模板   369
12.6  概念   369
12.6.1  語法   369
12.6.2  約束表達(dá)式   370
12.6.3  預(yù)定義的標(biāo)準(zhǔn)概念   372
12.6.4  類型約束的auto   372
12.6.5  類型約束和函數(shù)模板   373
12.6.6  類型約束和類模板   375
12.6.7  類型約束和類方法   375
12.6.8  類型約束和模板特化   376
12.7  本章小結(jié)   376
12.8  練習(xí)   377
第13章  C I/O揭秘   379
13.1  使用流   379
13.1.1  流的含義   380
13.1.2  流的來源和目的地   381
13.1.3  流式輸出   381
13.1.4  流式輸入   386
13.1.5  對象的輸入輸出   392
13.1.6  自定義的操作算子   393
13.2  字符串流   393
13.3  文件流   394
13.3.1  文本模式與二進(jìn)制模式   395
13.3.2  通過seek()和tell()在文件中
轉(zhuǎn)移   395
13.3.3  將流鏈接在一起   397
13.4  雙向I/O   398
13.5  文件系統(tǒng)支持庫   399
13.5.1  路徑   399
13.5.2  目錄條目   401
13.5.3  輔助函數(shù)   401
13.5.4  目錄遍歷   401
13.6  本章小結(jié)   402
13.7  練習(xí)   403
第14章  錯(cuò)誤處理   405
14.1  錯(cuò)誤與異常   405
14.1.1  異常的含義   405
14.1.2  C 中異常的優(yōu)點(diǎn)   406
14.1.3  建議   407
14.2  異常機(jī)制   407
14.2.1  拋出和捕獲異常   408
14.2.2  異常類型   410
14.2.3  按const引用捕獲異常對象   411
14.2.4  拋出并捕獲多個(gè)異常   411
14.2.5  未捕獲的異常   414
14.2.6  noexcept說明符   415
14.2.7  noexcept(expression)說明符   415
14.2.8  noexcept(expression)運(yùn)算符   415
14.2.9  拋出列表   416
14.3  異常與多態(tài)性   416
14.3.1  標(biāo)準(zhǔn)異常層次結(jié)構(gòu)   416
14.3.2  在類層次結(jié)構(gòu)中捕獲異常   418
14.3.3  編寫自己的異常類   419
14.3.4  源碼位置   421
14.3.5  日志記錄的源碼位置   422
14.3.6  異常的源碼位置   422
14.3.7  嵌套異常   423
14.4 重新拋出異常   425
14.5  堆棧的釋放與清理   426
14.5.1  使用智能指針   427
14.5.2  捕獲、清理并重新拋出   428
14.6  常見的錯(cuò)誤處理問題   428
14.6.1  內(nèi)存分配錯(cuò)誤   428
14.6.2  構(gòu)造函數(shù)中的錯(cuò)誤   430
14.6.3  構(gòu)造函數(shù)的function-try-blocks   432
14.6.4  析構(gòu)函數(shù)中的錯(cuò)誤   435
14.7  本章小結(jié)   435
14.8  練習(xí)   435
第15章  C 運(yùn)算符重載   437
15.1  運(yùn)算符重載概述   437
15.1.1  重載運(yùn)算符的原因   438
15.1.2  運(yùn)算符重載的限制   438
15.1.3  運(yùn)算符重載的選擇   438
15.1.4  不應(yīng)重載的運(yùn)算符   440
15.1.5  可重載運(yùn)算符小結(jié)   440
15.1.6  右值引用   443
15.1.7  優(yōu)先級和結(jié)合性   444
15.1.8  關(guān)系運(yùn)算符   444
15.2  重載算術(shù)運(yùn)算符   445
15.2.1  重載一元負(fù)號和一元正號
運(yùn)算符   445
15.2.2  重載遞增和遞減運(yùn)算符   446
15.3  重載按位運(yùn)算符和二元邏輯
運(yùn)算符   446
15.4  重載插入運(yùn)算符和提取運(yùn)算符   447
15.5  重載下標(biāo)運(yùn)算符   448
15.5.1  通過operator[]提供只讀訪問   451
15.5.2  非整數(shù)數(shù)組索引   452
15.6  重載函數(shù)調(diào)用運(yùn)算符   452
15.7  重載解除引用運(yùn)算符   453
15.7.1  實(shí)現(xiàn)operator*   454
15.7.2  實(shí)現(xiàn)operator->   455
15.7.3  operator.*和operator ->*的
含義   455
15.8  編寫轉(zhuǎn)換運(yùn)算符   456
15.8.1  auto運(yùn)算符   456
15.8.2  使用顯式轉(zhuǎn)換運(yùn)算符解決
多義性問題   457
15.8.3  用于布爾表達(dá)式的轉(zhuǎn)換   457
15.9  重載內(nèi)存分配和內(nèi)存釋放
運(yùn)算符   459
15.9.1  new和delete的工作原理   459
15.9.2  重載operator new和
operator delete   461
15.9.3  顯式地刪除/默認(rèn)化operator new
和operator delete   463
15.9.4  重載帶有額外參數(shù)的operator new
和operator delete   463
15.9.5  重載帶有內(nèi)存大小參數(shù)的
operator delete   464
15.9.6  重載用戶定義的字面量
運(yùn)算符   464
15.9.7  cooked模式字面量運(yùn)算符   465
15.9.8  raw模式字面量運(yùn)算符   465
15.9.9  標(biāo)準(zhǔn)用戶定義的字面量   466
15.10  本章小結(jié)   466
15.11  練習(xí)   466
第16章  C 標(biāo)準(zhǔn)庫概述   469
16.1  編碼原則   470
16.1.1  使用模板   470
16.1.2  使用運(yùn)算符重載   470
16.2  C 標(biāo)準(zhǔn)庫概述   470
16.2.1  字符串   470
16.2.2  正則表達(dá)式   471
16.2.3  I/O流   471
16.2.4  智能指針   471
16.2.5  異常   471
16.2.6  數(shù)學(xué)工具   472
16.2.7  時(shí)間和日期工具   473
16.2.8  隨機(jī)數(shù)   473
16.2.9  初始化列表   474
16.2.10  Pair和Tuple   474
16.2.11  詞匯類型   474
16.2.12  函數(shù)對象   474
16.2.13  文件系統(tǒng)   474
16.2.14  多線程   475
16.2.15  類型萃取   475
16.2.16  標(biāo)準(zhǔn)整數(shù)類型   475
16.2.17  標(biāo)準(zhǔn)庫特性測試宏   475
16.2.18     476
16.2.19  源位置   476
16.2.20  容器   476
16.2.21  算法   482
16.2.22  范圍庫   488
16.2.23  標(biāo)準(zhǔn)庫中還缺什么   488
16.3  本章小結(jié)   489
16.4  練習(xí)   489
第17章  理解迭代器與范圍庫   491
17.1  迭代器   491
17.1.1  獲取容器的迭代器   494
17.1.2  迭代器萃取   495
17.1.3  示例   495
17.2  流迭代器   496
17.2.1  輸出流迭代器   497
17.2.2  輸入流迭代器   497
17.3  迭代器適配器   498
17.3.1  插入迭代器   498
17.3.2  逆向迭代器   499
17.3.3  移動(dòng)迭代器   500
17.4  范圍   502
17.4.1  基于范圍的算法   502
17.4.2  視圖   504
17.4.3  范圍工廠   508
17.5  本章小結(jié)   509
17.6  練習(xí)   509
第18章  標(biāo)準(zhǔn)庫容器   511
18.1  容器概述   511
18.1.1  對元素的要求   512
18.1.2  異常和錯(cuò)誤檢查   513
18.2  順序容器   514
18.2.1  vector   514
18.2.2  vector特化   531
18.2.3  deque   532
18.2.4  list   532
18.2.5  forward_list   535
18.2.6  array   537
18.2.7  span   538
18.3  容器適配器   540
18.3.1  queue   540
18.3.2  priority_queue   542
18.3.3  stack   545
18.4  有序關(guān)聯(lián)容器   545
18.4.1  pair工具類   545
18.4.2  map   546
18.4.3  multimap   554
18.4.4  set   556
18.4.5  multiset   558
18.5  無序關(guān)聯(lián)容器/哈希表   558
18.5.1  哈希函數(shù)   559
18.5.2  unordered_map   560
18.5.3  unordered_multimap   563
18.5.4  unordered_set/
unordered_multiset   564
18.6  其他容器   564
18.6.1  標(biāo)準(zhǔn)C風(fēng)格數(shù)組   564
18.6.2  string   565
18.6.3  流   566
18.6.4  bitset   566
18.7  本章小結(jié)   570
18.8  練習(xí)   570
第19章  函數(shù)指針,函數(shù)對象,lambda
表達(dá)式   571
19.1  函數(shù)指針   571
19.2  指向方法(和數(shù)據(jù)成員)的指針   573
19.3  函數(shù)對象   576
19.3.1  編寫個(gè)函數(shù)對象   576
19.3.2  標(biāo)準(zhǔn)庫中的函數(shù)對象   576
19.4  lambda表達(dá)式   582
19.4.1  語法   583
19.4.2  lambda表達(dá)式作為參數(shù)   587
19.4.3  泛型lambda表達(dá)式   587
19.4.4  lambda捕獲表達(dá)式   587
19.4.5  模板化lambda表達(dá)式   588
19.4.6  lambda表達(dá)式作為返回類型   589
19.4.7  未計(jì)算上下文中的lambda
表達(dá)式   589
19.4.8  默認(rèn)構(gòu)造、拷貝和賦值   589 19.5  調(diào)用   590
19.6  本章小結(jié)   590
19.7  練習(xí)   590
第20章  掌握標(biāo)準(zhǔn)庫算法   593
20.1  算法概述   593
20.1.1  find()和find_if()算法   594
20.1.2  accumulate()算法   596
20.1.3  在算法中使用移動(dòng)語義   597
20.1.4  算法回調(diào)   597
20.2  算法詳解   598
20.2.1  非修改序列算法   598
20.2.2  修改序列算法   603
20.2.3  操作算法   611
20.2.4  分區(qū)算法   613
20.2.5  排序算法   614
20.2.6  二分查找算法   615
20.2.7  集合算法   616
20.2.8  小/算法   618
20.2.9  并行算法   619
20.2.10  約束算法   620
20.2.11  數(shù)值處理算法   621
20.3  本章小結(jié)   622
20.4  練習(xí)   622
第21章  字符串的本地化與正則表達(dá)式   625
21.1  本地化   625
21.1.1  寬字符   625
21.1.2  本地化字符串字面量   626
21.1.3  非西方字符集   626
21.1.4  locale和facet   628
21.1.5  轉(zhuǎn)換   631
21.2  正則表達(dá)式   632
21.2.1  ECMAScript語法   632
21.2.2  regex庫   637
21.2.3  regex_match()   638
21.2.4  regex_search()   640
21.2.5  regex_iterator   641
21.2.6  regex_token_iterator   642
21.2.7  regex_replace()   644
21.3  本章小結(jié)   646
21.4  練習(xí)   646
第22章  日期和時(shí)間工具   647
22.1  編譯期有理數(shù)   647
22.2  持續(xù)時(shí)間   649
22.3  時(shí)鐘   653
22.4  時(shí)間點(diǎn)   655
22.5  日期   656
22.6  時(shí)區(qū)   658
22.7  本章小結(jié)   659
22.8  練習(xí)   659
第23章  隨機(jī)數(shù)工具   661
23.1  C風(fēng)格隨機(jī)數(shù)生成器   661
23.1.1  隨機(jī)數(shù)引擎   662
23.1.2  隨機(jī)數(shù)引擎適配器   663
23.1.3  預(yù)定義的隨機(jī)數(shù)引擎和
引擎適配器   664
23.1.4  生成隨機(jī)數(shù)   664
23.1.5  隨機(jī)數(shù)分布   666
23.2  本章小結(jié)   668
23.3  練習(xí)   669
第24章  其他庫工具   671
24.1  variant   671
24.2  any   673
24.3  元組   674
24.3.1  分解元組   676
24.3.2  串聯(lián)   677
24.3.3  比較   677
24.3.4  make_from_tuple()   678
24.3.5  apply()   678
24.4  本章小結(jié)   678
24.5  練習(xí)   678
第IV部分  掌握C 的高級特性
第25章  自定義和擴(kuò)展標(biāo)準(zhǔn)庫   683
25.1  分配器   683
25.2  擴(kuò)展標(biāo)準(zhǔn)庫   684
25.2.1  擴(kuò)展標(biāo)準(zhǔn)庫的原因   685
25.2.2  編寫標(biāo)準(zhǔn)庫算法   685
25.2.3  編寫標(biāo)準(zhǔn)庫容器   686
25.2.4  將directed_graph實(shí)現(xiàn)為
標(biāo)準(zhǔn)庫容器   696
25.2.5  添加分配器支持   712
25.2.6  改善graph_node   716
25.2.7  附加的標(biāo)準(zhǔn)庫類似功能   717
25.2.8  進(jìn)一步改善   719
25.2.9  其他容器類型   719
25.3  本章小結(jié)   720
25.4  練習(xí)   720
第26章  高級模板   721
26.1  深入了解模板參數(shù)   721
26.1.1  深入了解模板類型參數(shù)   721
26.1.2  template template參數(shù)介紹   724
26.1.3  深入了解非類型模板參數(shù)   725
26.2  類模板部分特例化   727
26.3  通過重載模擬函數(shù)部分特例化   730
26.4  模板遞歸   731
26.4.1  N維網(wǎng)格:初次嘗試   731
26.4.2  真正的N維網(wǎng)格   732
26.5  可變參數(shù)模板   734
26.5.1  類型安全的變長參數(shù)列表   734
26.5.2  可變數(shù)目的混入類   736
26.5.3  折疊表達(dá)式   737
26.6  模板元編程   739
26.6.1  編譯時(shí)階乘   739
26.6.2  循環(huán)展開   740
26.6.3  打印元組   741
26.6.4  類型trait   744
26.6.5  模板元編程結(jié)論   752
26.7  本章小結(jié)   752
26.8  練習(xí)   752
第27章  C 多線程編程   753
27.1  多線程編程概述   754
27.1.1  爭用條件   755
27.1.2  撕裂   756
27.1.3  死鎖   756
27.1.4  偽共享   757
27.2  線程   757
27.2.1  通過函數(shù)指針創(chuàng)建線程   758
27.2.2  通過函數(shù)對象創(chuàng)建線程   759
27.2.3  通過lambda創(chuàng)建線程   760
27.2.4  通過成員函數(shù)創(chuàng)建線程   760
27.2.5  線程本地存儲   761
27.2.6  取消線程   761
27.2.7  自動(dòng)join線程   761
27.2.8  從線程獲得結(jié)果   762
27.2.9  復(fù)制和重新拋出異常   762
27.3  原子操作庫   764
27.3.1  原子操作   766
27.3.2  原子智能指針   767
27.3.3  原子引用   767
27.3.4  使用原子類型   767
27.3.5  等待原子變量   769
27.4  互斥   770
27.4.1  互斥體類   770
27.4.2  鎖   772
27.4.3  std::call_once   774
27.4.4  互斥體對象的用法示例   776
27.5  條件變量   779
27.5.1  虛假喚醒   780
27.5.2  使用條件變量   780
27.6  latch   781
27.7  barrier   782
27.8  semaphore   782
27.9  future   783
27.9.1  std::promise和std::future   784
27.9.2  std::packaged_task   784
27.9.3  std::async   785
27.9.4  異常處理   786
27.9.5  std::shared_future   786
27.10  示例:多線程的Logger類   787
27.11  線程池   791
27.12  協(xié)程   792
27.13  線程設(shè)計(jì)和實(shí)踐   793
27.14  本章小結(jié)   794
27.15  練習(xí)   794
第V部分  C 軟件工程
第28章  充分利用軟件工程方法   799
28.1  過程的必要性   799
28.2  軟件生命周期模型   800
28.2.1  瀑布模型   800
28.2.2  生魚片模型   802
28.2.3  螺旋類模型   802
28.2.4  敏捷   804
28.3  軟件工程方法論   805
28.3.1  UP   805
28.3.2  RUP   806
28.3.3  Scrum   806
28.3.4  極限編程   808
28.3.5  軟件分流   812
28.4  構(gòu)建自己的過程和方法   812
28.4.1  對新思想采取開放態(tài)度   812
28.4.2  提出新想法   812
28.4.3  知道什么行得通、什么行不通   812
28.4.4  不要逃避   813
28.5  源代碼控制   813
28.6  本章小結(jié)   814
28.7  練習(xí)   814
第29章  編寫高效的C 程序   817
29.1  性能和效率概述   817
29.1.1  提升效率的兩種方式   818
29.1.2  兩種程序   818
29.1.3  C 是不是低效的語言   818
29.2  語言層次的效率   818
29.2.1  高效地操縱對象   819
29.2.2  預(yù)分配內(nèi)存   823
29.2.3  使用內(nèi)聯(lián)方法和函數(shù)   823
29.3  設(shè)計(jì)層次的效率   823
29.3.1  盡可能多地緩存   823
29.3.2  使用對象池   824
29.4  剖析   829
29.4.1  使用gprof的剖析示例   829
29.4.2  使用Visual C 2019的剖析示例   836
29.5  本章小結(jié)   838
29.6  練習(xí)   838
第30章  熟練掌握測試技術(shù)   841
30.1  質(zhì)量控制   841
30.1.1  誰負(fù)責(zé)測試   842
30.1.2  bug的生命周期   842
30.1.3  bug跟蹤工具   843
30.2  單元測試   844
30.2.1  單元測試方法   844
30.2.2  單元測試過程   845
30.2.3  實(shí)際中的單元測試   848
30.3  模糊測試   855
30.4  高級測試   855
30.4.1  集成測試   855
30.4.2  系統(tǒng)測試   856
30.4.3  回歸測試   857
30.5  用于成功測試的建議   857
30.6  本章小結(jié)   858
30.7  練習(xí)   858
第31章  熟練掌握調(diào)試技術(shù)   859
31.1  調(diào)試的基本定律   859
31.2  bug分類學(xué)   860
31.3  避免bug   860
31.4  為bug做好規(guī)劃   861
31.4.1  錯(cuò)誤日志   861
31.4.2  調(diào)試跟蹤   862
31.4.3  斷言   869
31.4.4  崩潰轉(zhuǎn)儲   870
31.5  調(diào)試技術(shù)   870
31.5.1  重現(xiàn)bug   870
31.5.2  調(diào)試可重復(fù)的bug   871
31.5.3  調(diào)試不可重現(xiàn)的bug   871
31.5.4  調(diào)試退化   872
31.5.5  調(diào)試內(nèi)存問題   872
31.5.6  調(diào)試多線程程序   876
31.5.7  調(diào)試示例:文章引用   876
31.5.8  從ArticleCitations示例中總結(jié)出的教訓(xùn)   887
31.6  本章小結(jié)   887
31.7  練習(xí)   887
第32章  使用設(shè)計(jì)技術(shù)和框架   889
32.1  容易忘記的語法   890
32.1.1  編寫類   890
32.1.2  派生類   891
32.1.3  編寫lambda表達(dá)式   892
32.1.4  使用“復(fù)制和交換”慣用語法   892
32.1.5  拋出和捕捉異常   893
32.1.6  寫入文件   894
32.1.7  讀取文件   894
32.1.8  寫入類模板   895
32.1.9  約束模板參數(shù)   895
32.2  始終存在更好的方法   896
32.2.1  RAII   896
32.2.2  雙分派   898
32.2.3  混入類   902
32.3  面向?qū)ο蟮目蚣?  904
32.3.1  使用框架   904
32.3.2  MVC范型   905
32.4  本章小結(jié)   906
32.5  練習(xí)   906
第33章  應(yīng)用設(shè)計(jì)模式   907
33.1  依賴注入   908
33.1.1  示例:日志機(jī)制   908
33.1.2  依賴注入logger的實(shí)現(xiàn)   908
33.1.3  使用依賴注入   909
33.2  抽象工廠模式   910
33.2.1  示例:模擬汽車工廠   910
33.2.2  實(shí)現(xiàn)抽象工廠   911
33.2.3  使用抽象工廠   912
33.3  工廠方法模式   913
33.3.1  示例:模擬第二個(gè)汽車工廠   913
33.3.2  實(shí)現(xiàn)工廠   914
33.3.3  使用工廠   915
33.3.4  工廠的其他類型   917
33.3.5  工廠的其他用法   917
33.4  適配器模式   918
33.4.1  示例:適配Logger類   918
33.4.2  實(shí)現(xiàn)適配器   919
33.4.3  使用適配器   920
33.5  代理模式   920
33.5.1  示例:隱藏網(wǎng)絡(luò)連接問題   920
33.5.2  實(shí)現(xiàn)代理   921
33.5.3  使用代理   922
33.6  迭代器模式   922
33.7  觀察者模式   923
33.7.1  示例:從主題中暴露事件   923
33.7.2  實(shí)現(xiàn)觀察者   923
33.7.3  使用觀察者   924
33.8  裝飾器模式   925
33.8.1  示例:在網(wǎng)頁中定義樣式   926
33.8.2  裝飾器的實(shí)現(xiàn)   926
33.8.3  使用裝飾器   927
33.9  責(zé)任鏈模式   928
33.9.1  示例:事件處理   928
33.9.2  實(shí)現(xiàn)責(zé)任鏈   928
33.9.3  使用責(zé)任鏈   929
33.10  單例模式   930
33.10.1  日志記錄機(jī)制   931
33.10.2  實(shí)現(xiàn)單例   931
33.10.3  使用單例   933
33.11  本章小結(jié)   933
33.12  練習(xí)   933
第34章  開發(fā)跨平臺和跨語言的應(yīng)用程序   935
34.1  跨平臺開發(fā)   935
34.1.1  架構(gòu)問題   935
34.1.2  實(shí)現(xiàn)問題   938
34.1.3  平臺專用功能   940
34.2  跨語言開發(fā)   940
34.2.1  混用C和C   941
34.2.2  改變范型   941
34.2.3  鏈接C代碼   944
34.2.4  從C#調(diào)用C 代碼   946
34.2.5  C /CLI在C 中使用C#代碼和在C#中使用C 代碼   947
34.2.6  在Java中使用JNI調(diào)用C 代碼   948
34.2.7  從C 代碼調(diào)用腳本   950
34.2.8  從腳本調(diào)用C 代碼   950
34.2.9  從C 調(diào)用匯編代碼   952
34.3  本章小結(jié)   953
34.4  練習(xí)   953
第VI部分  附錄
附錄A  C 面試   957
在線資源(掃描封底二維碼下載)
附錄B  標(biāo)準(zhǔn)庫頭文件   977
附錄C  UML簡介   983
附錄D  帶注解的參考文獻(xiàn)   989
 
 

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號