內容簡介
《輕鬆學C++編程:案例教學》從初學者的角度循序漸進地從C++語言的基礎語法到高級語法進行講解。全書使用生動的實例和圖示,介紹C++面向對象程式設計的基礎知識;進而通過案例詳解類的高級套用、運算符重載、繼承與多態,全面呈現了面向對象程式設計的主要內容。在數據流和檔案操作技巧與套用方面,本書還提供了實現相關算法的精選範例,以便讀者理解異常處理、C++模板的套用設計方式,並熟悉標準模板函式館的套用。
《輕鬆學C++編程:案例教學》的各章節中貫穿了大量範例程式的講解和分析,並在每章末尾附帶了習題與解答。《輕鬆學C++編程:案例教學》敘述簡潔、清晰,具有較強的可操作性,適合作為相關專業的教材,也適合初學者自學。對於具有一定編程經驗且希望快速掌握C++語言的從業人員,本書也是一本快速掌握C++語言的讀物。
圖書目錄
目 錄
第 1 章 C++入門基礎課程 1
1.1 認識C++ 1
1.1.1 面向對象程式設計 2
1.1.2 算法 5
1.2 第一個C++程式 7
1.2.1 開始編寫程式 10
1.2.2 保存程式檔案 11
1.2.3 編譯器 11
1.2.4 執行程式 12
1.2.5 程式錯誤 12
1.3 程式結構簡介 13
1.3.1 頭檔案區 13
1.3.2 程式注釋 14
1.3.3 主程式區——main()函式 15
1.3.4 命名空間 15
1.3.5 輸入輸出功能簡介 16
1.3.6 程式語句編寫格式 17
1.3.7 標識符與保留字 17
1.4 上機編程實踐 19
本章習題 19
第 2 章 變數、常數與數據類型 21
2.1 變數簡介 22
2.2 常數 24
2.3 基本數據類型 25
2.3.1 整數 25
2.3.2 浮點數 27
2.3.3 字元 29
2.3.4 轉義字元 30
2.3.5 布爾數據類型 31
2.4 上機編程實踐 33
本章習題 34
第 3 章 表達式與運算符 35
3.1 表達式的表示法 35
3.2 認識運算符 36
3.2.1 運算符的優先權 36
3.2.2 賦值運算符 37
3.2.3 算術運算符 37
3.2.4 關係運算符 39
3.2.5 邏輯運算符 40
3.2.6 位運算符 41
3.2.7 遞增與遞減運算符 45
3.2.8 複合賦值運算符 47
3.3 數據類型轉換 47
3.3.1 自動類型轉換 48
3.3.2 強制類型轉換 49
3.3.3 強制類型轉換運算符簡介 50
3.4 上機編程實踐 51
本章習題 52
第 4 章 流程控制結構 55
4.1 順序結構 55
4.2 選擇結構 56
4.2.1 if條件語句 56
4.2.2 if-else條件語句 57
4.2.3 if-else if條件語句 58
4.2.4 條件運算符 60
4.2.5 switch條件語句 61
4.3 重複結構 63
4.3.1 for循環語句 64
4.3.2 while循環語句 66
4.3.3 do-while循環語句 68
4.4 循環控制語句 69
4.4.1 break語句 69
4.4.2 continue語句 70
4.4.3 goto語句 72
4.5 上機編程實踐 73
本章習題 75
第 5 章 數組與字元串 78
5.1 數組簡介 78
5.1.1 數組表示法 78
5.1.2 數組與變數 79
5.1.3 一維數組 79
5.1.4 二維數組 81
5.1.5 多維數組 83
5.2 字元串簡介 84
5.2.1 字元串聲明 84
5.2.2 字元串數組 87
5.3 String類 89
5.3.1 聲明String類 89
5.3.2 字元串運算符 91
5.3.3 String類的成員函式 92
5.4 上機編程實踐 94
本章習題 96
第 6 章 指針與地址 98
6.1 認識地址 98
6.1.1 指針的作用 99
6.1.2 變數地址的存取 99
6.1.3 指針變數的聲明 100
6.1.4 指針運算 103
6.1.5 多重指針 105
6.2 指針與數組 107
6.2.1 指針與一維數組 108
6.2.2 指針與多維數組 109
6.2.3 指針與字元串 111
6.2.4 指針數組 113
6.3 動態分配記憶體 116
6.3.1 動態分配記憶體和靜態分配記憶體 116
6.3.2 動態分配變數 117
6.3.3 動態分配數組 118
6.4 引用類型簡介 120
6.4.1 引用類型聲明 120
6.4.2 指針引用簡介 121
6.5 上機編程實踐 123
本章習題 124
第 7 章 函式入門 128
7.1 函式功能簡介 128
7.1.1 自定義函式 128
7.1.2 函式聲明 130
7.1.3 函式調用 132
7.2 認識參數傳遞 133
7.2.1 傳值調用 133
7.2.2 傳址調用 135
7.2.3 傳引用調用 136
7.2.4 參數默認值 137
7.2.5 數組參數 139
7.2.6 返回值 140
7.3 上機編程實踐 142
本章習題 143
第 8 章 函式的進階套用 145
8.1 函式指針簡介 145
8.1.1 聲明函式指針 145
8.1.2 參數型函式指針 147
8.1.3 函式指針數組 149
8.2 命令行參數 150
8.3 變數種類 152
8.3.1 全局變數 153
8.3.2 局部變數 153
8.3.3 區塊變數 153
8.4 變數的存儲類型 153
8.4.1 自動變數 153
8.4.2 靜態局部變數 154
8.4.3 外部變數 155
8.4.4 靜態外部變數 156
8.4.5 暫存器變數 158
8.5 特殊函式功能 158
8.5.1 遞歸函式 158
8.5.2 內聯函式 160
8.5.3 函式重載 161
8.6 上機編程實踐 163
本章習題 164
第 9 章 預處理指令與宏 166
9.1 預處理指令 166
9.2 #define語句 168
9.2.1 宏定義基本語句 168
9.2.2 宏定義函式 169
9.2.3 宏函式簡介 170
9.2.4 標準預處理宏 172
9.3 條件編譯語句 173
9.4 上機編程實踐 173
本章習題 174
第 10 章 自定義數據類型與套用 176
10.1 結構 176
10.1.1 結構聲明方式 176
10.1.2 結構的存取 177
10.1.3 結構指針 178
10.2 結構與數組 180
10.2.1 結構數組 180
10.2.2 結構數組的成員 182
10.2.3 結構指針數組 183
10.3 嵌套結構 185
10.4 函式與結構 187
10.4.1 結構傳值調用 187
10.4.2 結構傳址調用 189
10.4.3 結構傳引用調用 189
10.5 其他自定義數據類型 190
10.5.1 類型定義 190
10.5.2 枚舉類型 191
10.5.3 聯合類型 193
10.6 上機編程實踐 195
本章習題 197
第 11 章 認識面向對象程式設計 200
11.1 類的基本概念 200
11.1.1 類對象的聲明 201
11.1.2 訪問許可權的關鍵字 202
11.1.3 聲明類對象 202
11.2 構造函式與析構函式 205
11.2.1 構造函式 205
11.2.2 構造函式的重載 208
11.2.3 析構函式 209
11.2.4 創建指針對象 211
11.3 上機編程實踐 213
本章習題 213
第 12 章 類的進階套用 215
12.1 對象數組和友元函式 215
12.1.1 對象數組 215
12.1.2 友元函式 217
12.1.3 友元類 220
12.2 this指針與靜態數據成員 222
12.2.1 this指針 222
12.2.2 靜態數據成員 224
12.2.3 嵌套類 225
12.3 在函式中傳遞對象參數 227
12.3.1 對象傳值調用 227
12.3.2 對象傳址調用 227
12.3.3 對象傳引用調用 228
12.4 上機編程實踐 228
本章習題 228
第 13 章 運算符重載 229
13.1 運算符重載簡介 229
13.1.1 重載的定義與規則 229
13.1.2 一元運算符重載 232
13.1.3 二元運算符重載 233
13.2 特殊運算符重載 235
13.2.1 “>>”與“<<”運算符重載 235
13.2.2 “=”運算符重載 237
13.2.3 “==”運算符重載 239
13.2.4 “++”與“--”運算符重載 241
13.3 類型轉換運算符重載 243
13.3.1 類類型轉換為基本數據類型 244
13.3.2 基本數據類型轉換為類類型 246
13.3.3 類類型轉換成其他類類型 248
13.4 上機編程實踐 250
本章習題 250
第 14 章 繼承與多態 252
14.1 認識繼承關係 252
14.1.1 基類與派生類 252
14.1.2 單繼承 253
14.1.3 public關鍵字 253
14.1.4 protected關鍵字 254
14.1.5 private關鍵字 257
14.1.6 多繼承 259
14.2 派生類的構造函式與析構函式 261
14.2.1 單繼承構造函式與析構函式的調用順序 262
14.2.2 多繼承構造函式與析構函式的調用順序 263
14.3 多態與虛函式簡介 265
14.3.1 靜態綁定與動態綁定 265
14.3.2 聲明虛函式 267
14.3.3 純虛函式 269
14.3.4 抽象基類 269
14.3.5 虛基類 270
14.4 上機編程實踐 272
本章習題 273
第 15 章 檔案入門與處理機制 274
15.1 數據流的概念 274
15.2 檔案簡介 275
15.2.1 檔案分類 275
15.2.2 順序存取的檔案和隨機存取的檔案 276
15.3 檔案的輸入/輸出管理 276
15.3.1 檔案的打開 277
15.3.2 檔案的關閉 277
15.4 文本檔案操作技巧 279
15.4.1 文本檔案的寫入 279
15.4.2 文本檔案的讀取函式 280
15.5 二進制檔案操作技巧 281
15.5.1 寫入二進制檔案 282
15.5.2 讀取二進制檔案 283
15.5.3 隨機存取檔案方式 284
15.6 上機編程實踐 286
本章習題 287
第 16 章 異常處理與模板 288
16.1 異常處理的基本認識 288
16.1.1 簡單的異常處理結構 288
16.1.2 try語句 289
16.1.3 catch區塊重載 290
16.1.4 嵌套try…catch區塊 291
16.1.5 一次捕捉所有異常 293
16.1.6 重新拋出異常 294
16.2 認識模板功能 296
16.2.1 模板分類 296
16.2.2 函式模板 296
16.2.3 聲明函式模板 297
16.2.4 非類型參數的函式模板 299
16.3 類模板 300
16.3.1 聲明類模板 300
16.3.2 堆疊類模板 302
16.3.3 非類型參數的類模板 304
16.4 上機編程實踐 307
本章習題 307
第 17 章 大話標準模板函式館 310
17.1 認識向量容器 310
17.2 堆疊的實現 312
17.3 佇列的實現 314
17.3.1 單向佇列 315
17.3.2 雙向佇列 316
17.4 認識集合 317
17.4.1 並集set_union 318
17.4.2 交集set_intersection 319
17.4.3 差集set_difference 320
17.5 映射 322
17.6 STL排序的實現 324
17.6.1 sort()函式——從小到大升序排序 324
17.6.2 sort()函式——從大到小降序排序 325
17.6.3 向量容器的從小到大升序排序 326
17.6.4 向量容器的從大到小降序排序 327
17.6.5 自定義結構的排序 328
17.7 使用標準模板函式館實現查找 329
17.7.1 調用find()函式實現查找 329
17.7.2 調用find_if()函式進行查找 330
17.7.3 調用binary_search()函式進行二分查找 331
17.8 標準模板函式館鍊表的實現 333
17.8.1 forward_list()——單向鍊表 333
17.8.2 單向鍊表的反轉 335
17.8.3 調用insert()函式將指定元素插入鍊表 336
17.8.4 兩個列表進行合併排序 338
17.8.5 列表內容交換——swap()函式 339
17.9 上機編程實踐 341
本章習題 343
第 18 章 解析樹結構及圖結構 344
18.1 樹結構 344
18.1.1 用數組來實現二叉樹 345
18.1.2 用鍊表來實現二叉樹 347
18.1.3 二叉樹節點的插入 349
18.1.4 二叉樹節點的刪除 350
18.1.5 二叉樹的遍歷 350
18.2 圖結構 353
18.2.1 圖的常用數據表示法 354
18.2.2 圖的遍歷——深度優先遍曆法 355
18.2.3 圖的遍歷——廣度優先遍曆法 358
18.2.4 Kruskal算法 361
18.2.5 Dijkstra算法 365
18.2.6 Floyd算法 369
本章習題 373
附錄A 課後習題參考答案(電子版見下載) 375
附錄B C++的常用函式館(電子版見下載) 426
B.1 字元處理函式 426
B.2 字元串處理函式 428
B.3 類型轉換函式 430
B.4 時間和日期函式 431
B.5 數學函式 432
B.6 隨機數函式 434
附錄C 格式化輸入/輸出數據(電子版見下載) 437
C.1 插入運算符“<<” 437
C.2 常用的輸出函式 444
C.3 提取運算符“>>” 445
C.4 常用的輸入函式 446
C.5 錯誤狀態位 447