《C++覆轍錄》是2016年人民郵電出版社出版的圖書,作者是[美] 史蒂芬 C. 杜赫斯特( Stephen C. Dewhurst )。
基本介紹
基本信息,圖書簡介,目錄,
基本信息
【作者】 | 【編輯】 | ||
【ISBN】 | 978-7-115-37259-8 | 【日期】 | 2016-04 |
【版次】 | 1 | 【印次】 | 1 |
【頁數】 | 330頁 | 【字數】 | 430千字 |
【開本】 | 16 | 【定價】 | 69元 |
圖書簡介
《C++覆轍錄》是C++大師Stephen C. Dewhurst根據多年教授C++課程中所遇到的常見錯誤的心得筆記編寫而成。本書所有章節都從一個眾所周知的、在日常編碼或設計實踐經常遭遇的問題入手,先指出其不足,再對其背後思想中存在的合理與不合理之處深入剖析,取其精華,去其糟粕,給出一個簡潔、通用的方案,給出如何規避或糾正它們的建議,從而有助於C++軟體工程師避免重蹈前輩的覆轍。
目錄
第1章 基礎問題 1
常見錯誤1:過分積極的注釋 1
常見錯誤2:幻數 4
常見錯誤3:全局變數 6
常見錯誤4:未能區分函式重載和形參默認值 8
常見錯誤5:對引用的認識誤區 10
常見錯誤6:對常量(性)的認識誤區 14
常見錯誤7:無視基礎語言的精妙之處 15
常見錯誤8:未能區分可訪問性和可見性 20
常見錯誤9:使用糟糕的語言 25
常見錯誤10:無視(久經考驗的)習慣用法 28
常見錯誤11:聰明反被聰明誤 32
常見錯誤12:嘴上無毛,辦事不牢 34
第2章 語法問題 37
常見錯誤13:數組定義和值初始化的語法形式混淆 37
常見錯誤14:捉摸不定的評估求值次序 38
常見錯誤15:(運算符)優先權問題 44
常見錯誤16:for語句引發的理解障礙 48
常見錯誤17:取大優先解析原則帶來的問題 52
常見錯誤18:聲明飾詞次序的小聰明 53
常見錯誤19:“函式還是對象”的多義性 55
常見錯誤20:效果漂移的型別量化飾詞 56
常見錯誤21:自反初始化 57
常見錯誤22:靜態連線型別和外部連線型別 59
常見錯誤23:運算符函式名字查找的反常行為 60
常見錯誤24:晦澀難懂的operator - 63
第3章 預處理器問題 65
常見錯誤25:使用#define定義的字面量 65
常見錯誤26:使用#define定義的偽函式(函式宏) 68
常見錯誤27:#if的濫用 70
常見錯誤28:斷言(assert宏)的副作用 76
第4章 型別轉換問題 79
常見錯誤29:以void *為型別轉換的中介型別 79
常見錯誤30:截切問題 83
常見錯誤31:對目標型別為指涉物為常量的指針型別的型別轉換的
認識誤區 86
常見錯誤32:對以指涉物為指涉到常量的指針型別的型別為目標型別的
型別轉換的認識誤區 87
常見錯誤33:對以指涉物為指涉到基類型別的指針型別的型別為目標型
別的型別轉換的認識誤區 92
常見錯誤34:指涉到多維數組的指針帶來的問題 93
常見錯誤35:未經校驗的向下轉型 95
常見錯誤36:型別轉換運算符的誤用 96
常見錯誤37:始料未及的構造函式型別轉換 101
常見錯誤38:在多繼承條件下進行強制型別轉換 104
常見錯誤39:對非完整型別做強制型別轉換 106
常見錯誤40:舊式強制型別轉換 108
常見錯誤41:靜態強制型別轉換 109
常見錯誤42:形參引發臨時對象生成的初始化 112
常見錯誤43:臨時對象的生存時域 116
常見錯誤44:引用和臨時對象 119
常見錯誤45:動態強制型別轉換運算符dynamic_cast帶來的多義性解析
失敗 122
常見錯誤46:對逆變性的誤解 127
第5章 初始化問題 131
常見錯誤47:賦值與初始化混淆 131
常見錯誤48:位於非適當轄域的變數 135
常見錯誤49:未能意識到C++語言中複製操作的固守行為 138
常見錯誤50:按位複製的class對象 143
常見錯誤51:未能區分構造函式中的初始化和賦值 145
常見錯誤52:未能在成員初始化列表中保持次序一致性 147
常見錯誤53:對於虛基類(子對象)進行默認初始化 149
常見錯誤54:複製構造函式對基類子對象初始化的未預期行為 155
常見錯誤55:運行期靜態初始化次序 158
常見錯誤56:直接vs. 複製初始化 161
常見錯誤57:對實參的直接初始化 164
常見錯誤58:無視返回值最佳化 166
常見錯誤59:在構造函式中初始化靜態數據成員 170
第6章 記憶體和資源管理問題 175
常見錯誤60:未能區分純量與數組的記憶體分配機制 175
常見錯誤61:記憶體分配失敗校驗 179
常見錯誤62:用自定義版本替換全局的記憶體管理運算符所調用的函式 181
常見錯誤63:成員版本的operator new和operator delete的轄域和
調用機制混淆 185
常見錯誤64:拋出字元串字面常量作為異常對象 186
常見錯誤65:未能正確理解和利用異常處理機制 189
常見錯誤66:濫用局部量地址 193
常見錯誤67:未能採用RAII習慣用法 198
常見錯誤68:對auto_ptr的誤用 204
第7章 多態問題 207
常見錯誤69:型別特徵碼 207
常見錯誤70:將基類析構函式聲明為非虛函式 213
常見錯誤71:對非虛成員函式的遮掩 218
常見錯誤72:以過分靈活的方式濫用模板方法設計模式 222
常見錯誤73:重載虛函式 223
常見錯誤74:為實參指定默認初始化物的虛函式 225
常見錯誤75:在構造函式和析構函式中調用虛函式 227
常見錯誤76:虛賦值 230
常見錯誤77:未能區分函式的重載、改寫和遮掩 233
常見錯誤78:未能深入理解虛函式和改寫的實現機制 239
常見錯誤79:支配原則議題 247
第8章 型別設計問題 251
常見錯誤80:取/設狀態接口 251
常見錯誤81:常量和引用數據成員 255
常見錯誤82:未能理解常量成員函式 258
常見錯誤83:未能區分強聚合和弱聚合 262
常見錯誤84:非適當的運算符重載 268
常見錯誤85:運算符優先權和重載 271
常見錯誤86:友元vs.成員運算符 272
常見錯誤87:自增/自減運算符的問題 273
常見錯誤88:對模板化的複製操作的認識誤區 277
第9章 繼承譜系設計問題 281
常見錯誤89:持有class對象的數組 281
常見錯誤90:非適當的容器型別之可替換性 283
常見錯誤91:未能理解protected訪問層級 287
常見錯誤92:為代碼復用而以public方式繼承 291
常見錯誤93:以public方式繼承具象類 295
常見錯誤94:未能運用繼承譜系的退化形式 296
常見錯誤95:繼承的濫用 297
常見錯誤96:依型別分派的控制結構 301
常見錯誤97:單根譜系 304
常見錯誤98:向class對象打探隱私 308
常見錯誤99:權能查詢問題 311
中英文對照表 317
引用書目 327