內容簡介
《C++程式設計:現代方法》是一本寫給沒有編程經驗的人看的C++入門書,篇幅適中,通俗易懂。全書分四部分,涵蓋了C++編程的所有重要概念。作者在C++教育領域很有影響力,他是月訪問量超百萬的著名C\C++教程站Cprogramming.com的創建者,也真正了解每一位C++學習者的需求,了解初學者起步階段的困惑和糾結。因此,《C++程式設計:現代方法》由淺入深、循序漸進、步步為營,講述了編程過程的每一個環節,揭示了編程之路中可能遇到的各種“坑”,是初學C++最合適的入門書。
《C++程式設計:現代方法》適合C++初學者、在校學生,以及對C++編程感興趣者參考閱讀。
圖書目錄
第 一部分 進入C++的世界
第 1章 簡介和環境搭建 3
1.1 什麼是程式語言 3
1.2 C和C++之間的不同之處 3
1.3 學習C++之前,是否需要先了解C 3
1.4 成為程式設計師,是否需要懂數學 4
1.5 術語 4
1.5.1 編程 4
1.5.2 執行檔 4
1.6 編輯和編譯源檔案 4
1.7 關於示例原始碼 5
1.8 Windows 5
1.8.1 第 1步:下載Code::Blocks 5
1.8.2 第 2步:安裝Code::Blocks 5
1.8.3 第3步:運行Code::Blocks 6
1.8.4 錯誤調試 9
1.8.5 使用Code::Blocks的原因 11
1.9 Macintosh 11
1.9.1 Xcode 12
1.9.2 安裝Xcode 5 12
1.9.3 運行Xcode 12
1.9.4 用Xcode創建第 一個C++程式 12
1.9.5 安裝Xcode 6 beta 16
1.9.6 運行Xcode 16
1.9.7 用Xcode創建第 一個C++程式 17
1.9.8 錯誤調試 20
1.10 Linux 21
1.10.1 步驟1:安裝g++ 21
1.10.2 步驟2:運行g++ 22
1.10.3 步驟3:運行你的程式 22
1.10.4 步驟4:安裝文本編輯器 23
1.10.5 配置nano 23
1.10.6 使用nano 23
第 2章 C++基礎 27
2.1 C++簡介 27
2.1.1 最簡單的C++程式 27
2.1.2 程式無法運行的原因 29
2.1.3 C++程式的基本結構 30
2.2 為程式添加注釋 30
2.3 像程式設計師一樣思考,創建可復用的代碼 31
2.4 痛並快樂著的練習 32
2.5 問答題 32
2.6 實踐題 33
第3章 用戶互動和變數 34
3.1 變數 34
3.1.1 C++中的變數聲明 34
3.1.2 使用變數 34
3.1.3 程式閃退的處理方法 35
3.1.4 修改、使用和比較變數 36
3.1.5 加減1的簡寫 36
3.2 變數的使用和濫用 38
3.2.1 C++中聲明變數的常見錯誤 38
3.2.2 區分大小寫 39
3.2.3 變數命名 39
3.3 字元串存儲 40
3.4 基本類型的存儲解析 42
3.5 問答題 43
3.6 實踐題 44
第4章 if語句 45
4.1 if的基礎語法 45
4.2 表達式 46
4.2.1 truth 47
4.2.2 布爾型 48
4.3 else語句 48
4.4 else-if 49
4.5 字元串比較 49
4.6 邏輯運算符在條件語句上的有趣套用 50
4.6.1 邏輯非 50
4.6.2 邏輯與 51
4.6.3 邏輯或 51
4.6.4 綜合表達式 52
4.6.5 邏輯表達式示例 53
4.7 問答題 54
4.8 實踐題 54
第5章 循環 55
5.1 while循環 55
5.2 for循環 57
5.2.1 變數初始化 57
5.2.2 循環條件 57
5.2.3 變數更新 57
5.3 do-while循環 58
5.4 控制循環 59
5.5 嵌套循環 61
5.6 選擇合適的循環 62
5.6.1 for循環 62
5.6.2 while循環 62
5.6.3 do-while循環 63
5.7 問答題 64
5.8 實踐題 64
第6章 函式 66
6.1 函式語法 66
6.2 局部變數和全局變數 68
6.2.1 局部變數 68
6.2.2 全局變數 69
6.2.3 有關全局變數的警告 70
6.3 使函式對調用有效 71
6.3.1 函式定義和聲明 71
6.3.2 函式原型的套用示例 72
6.4 把程式拆分成函式 73
6.4.1 當需要重複代碼時 73
6.4.2 使代碼更加易讀 73
6.5 命名和重載函式 73
6.6 函式概述 74
6.7 問答題 74
6.8 實踐題 75
第7章 如何解決問題 76
7.1 只需判斷數被除時有無餘數 78
7.2 效率和安全的簡單說明 79
7.3 不知道算法的情況下的解決方案 80
7.4 實踐題 82
第8章 switch-case和枚舉 83
8.1 比較switch-case和if-else 85
8.2 使用枚舉創建簡單類型 86
8.3 問答題 87
16.4.4 性能 166
16.5 盤點遞歸 166
16.6 問答題 167
16.7 實踐題 167
第 17章 二叉樹 169
17.1 在現實世界中使用二叉樹 184
17.2 問答題 186
17.3 實踐題 187
第 18章 標準模板庫 188
18.1 vector,大小可變的數組 189
18.1.1 vector的方法調用 190
18.1.2 vector的其他功能 190
18.2 map 191
18.3 疊代器 192
18.4 盤點STL 195
18.5 進一步學習STL 196
18.6 問答題 196
18.7 實踐題 197
第 19章 更多關於字元串的內容 198
19.1 讀入字元串 198
19.2 字元串長度和訪問單個元素 200
19.3 字元串搜尋與子字元串 200
19.4 通過引用傳遞 202
19.4.1 const傳播 203
19.4.2 const和STL 204
19.5 問答題 206
19.6 實踐題 206
第 20章 使用Code::Blocks進行調試 208
20.1 踏上調試之旅 209
20.2 設定斷點 211
20.2.1 調試崩潰問題 216
20.2.2 強行進入一個“懸停”程式 219
20.2.3 修改變數 223
20.2.4 總結 223
20.3 實踐題 223
20.3.1 問題1:指數問題 223
20.3.2 問題2:相加問題 224
20.3.3 問題3:斐波那契程式的bug 225
20.3.4 問題4:列表的錯誤讀取和錯誤輸出 225
第三部分 編寫大規模程式
第 21章 將程式分解 228
21.1 理解C++的構建過程 228
21.1.1 預處理 228
21.1.2 編譯 230
21.1.3 連結 230
21.1.4 把編譯和連結分開的原因 231
21.2 如何把程式分開到不同的檔案中 231
21.2.1 第 一步:將聲明和定義分開 231
21.2.2 第 二步:找出哪些函式需要共享出去 232
21.2.3 第三步:把共用的函式移到新的檔案中 232
21.2.4 看一個完整的例子 233
21.2.5 關於頭檔案其他要注意的地方 237
21.2.6 在開發環境中處理多個源檔案 237
21.3 問答題 240
21.4 實踐題 240
第 22章 程式設計方法介紹 241
22.1 冗餘代碼 241
22.2 假定數據是如何存儲的 242
22.3 設計和注釋 244
22.4 問答題 245
第 23章 隱藏結構化數據的表示 246
23.1 問答題 250
23.2 實踐題 250
第 24章 類 251
24.1 隱藏數據的存儲方式 251
24.2 聲明一個類的實例 253
24.3 類的職責 254
24.4 小結 255
24.5 問答題 255
24.6 實踐題 256
第 25章 類的生命周期 257
25.1 對象構造 257
25.1.1 沒有新建構造函式的結果 260
25.1.2 初始化類的成員 260
25.1.3 用初始化列表初始化常量欄位 261
25.2 解構對象 262
25.2.1 delete時的解構 264
25.2.2 超出作用域時的解構 264
25.2.3 由其他析構函式導致的解構 265
25.3 複製類 266
25.3.1 賦值操作符 267
25.3.2 複製構造函式 269
25.3.3 所有編譯器生成的方法 270
25.3.4 徹底地阻止複製 271
25.4 問答題 272
25.5 實踐題 273
第 26章 繼承和多態 274
26.1 C++中的繼承 275
26.1.1 繼承的別的作用以及誤用的情況 278
26.1.2 繼承、對象構建和銷毀 279
26.1.3 多態和對象銷毀 281
26.1.4 對象切割的問題 283
26.1.5 與子類共享代碼 284
26.1.6 protected的數據 285
26.1.7 屬於類的數據 285
26.1.8 如何實現多態 286
26.2 問答題 288
26.3 實踐題 290
第 27章 命名空間 291
27.1 問答題 294
27.2 實踐題 295
第 28章 檔案I/O 296
28.1 檔案I/O基礎 296
28.2 檔案格式 298
28.3 寫檔案 301
28.4 檔案位置 302
28.5 接受命令行參數 305
28.6 二進制檔案 I/O 307
28.6.1 處理二進制檔案 309
28.6.2 轉換到char* 309
28.6.3 二進制I/O的一個例子 310
28.6.4 把類存儲到檔案中 311
28.6.5 讀取二進制檔案 312
28.7 問答題 315
28.8 實踐題 315
第 29章 C++中的模板 318
29.1 模板函式 318
29.1.1 類型推斷 320
29.1.2 鴨子類型 320
29.2 模板類 321
29.3 使用模板的一些小技巧 322
29.4 模板小結 325
29.5 問答題 328
29.6 實踐題 330
第四部分 其他
第30章 使用iomanip格式化輸出 332
30.1 處理空間問題 332
30.1.1 使用setw設定欄位寬度 332
30.1.2 改變填充字元 333
30.1.3 永久改變設定 333
30.2 把你的iomanip知識匯總到一起 334
30.2.1 輸出數字 336
30.2.2 使用setprecision來設定數值輸出的精度 336
30.2.3 如何處理貨幣 337
30.2.4 按不同的進制輸出 337
第31章 異常和錯誤報告 338
第32章 最後的話 346
索引 368