輕松學C++編程:案例教學
胡昭民
相關主題
商品描述
《輕松學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