圖書簡介
《C++程式開發案例課堂》以零基礎講解為宗旨,採取【基礎入門→核心技術→高級套用→項目開發實戰】的講解模式。
《C++程式開發案例課堂》第1篇【基礎入門】主要講解C++基本概念、C++的程式結構、數據類型、靈活使用運算符、程式流程控制等;第2篇【核心技術】主要講解函式的套用、數組與字元串、指針、結構體、共用體和枚舉類型、面向對象編程、構造函式和析構函式等;第3篇【高級套用】主要講解運算符的重載、類的繼承、虛函式和抽象類、C++操作檔案、異常處理、模板與類型轉換、容器和疊代器等;第4篇【項目開發實戰】主要講解開發計算器助手、開發汽車信息管理系統、開發銀行交易系統、開發學校職工信息管理系統。
圖書目錄
第1篇 基 礎 入 門
第1章 揭開C++的神秘面紗——我的第一個C++程式 3
1.1 認識C++ 4
1.2 C++的優勢 5
1.3 常見的C++開發環境 6
1.4 新手的福音——Visual Studio 2017集成環境 8
1.4.1 安裝Visual Studio 2017的條件 8
1.4.2 安裝Visual Studio 2017 8
1.5 熟悉Visual Studio 2017開發界面 10
1.5.1 創建項目 10
1.5.2 選單欄 12
1.5.3 工具列 13
1.5.4 解決方案資源管理器 13
1.5.5 【屬性】面板 14
1.5.6 【錯誤列表】面板 14
1.5.7 【輸出】面板 14
1.6 實戰演練——第一個C++項目 15
1.7 理解C++語言的翻譯過程 16
1.8 大神解惑 17
1.9 跟我學上機 18
第2章 零基礎開始學習——C++的程式結構 19
2.1 分析C++程式的結構 20
2.1.1 #include指令及頭檔案 20
2.1.2 main函式 21
2.1.3 變數聲明和定義 22
2.1.4 函式的聲明 24
2.1.5 關於注釋 25
2.2 編譯前的預處理 26
2.3 輸入和輸出數據 29
2.3.1 cout輸出數據 29
2.3.2 cin讀取輸入數據 32
2.4 命名空間 33
2.4.1 命名空間的定義 33
2.4.2 using關鍵字 34
2.4.3 命名空間std 35
2.5 實戰演練——經典的入門程式 36
2.6 大神解惑 38
2.7 跟我學上機 38
第3章 程式中的數據種類——數據類型 39
3.1 標識符 40
3.1.1 保留字 40
3.1.2 標識符命名 41
3.2 變數與常量 41
3.2.1 變數 41
3.2.2 常量 44
3.3 基本變數類型 46
3.3.1 整數類型 46
3.3.2 字元類型 48
3.3.3 浮點數類型 50
3.3.4 布爾類型 51
3.4 查詢變數的類型和記憶體空間大小 52
3.5 自定義數據類型 53
3.6 實戰演練——對比不同數據類型的長度 57
3.7 大神解惑 57
3.8 跟我學上機 58
第4章 誰來運算元據——靈活使用運算符 59
4.1 運算符概述 60
4.1.1 賦值運算符 60
4.1.2 算術運算符 61
4.1.3 關係運算符 62
4.1.4 邏輯運算符 64
4.1.5 自增和自減運算符 65
4.1.6 位邏輯運算符 66
4.1.7 移位運算符 68
4.1.8 三元運算符 69
4.1.9 逗號運算符 70
4.1.10 類型轉換運算符 71
4.2 運算符優先權和結合性 72
4.2.1 運算符優先權 72
4.2.2 運算符結合性 73
4.3 實戰演練——綜合運用運算符 75
4.4 大神解惑 76
4.5 跟我學上機 77
第5章 程式的執行方向——程式流程控制 79
5.1 順序語句 80
5.2 條件判斷語句 81
5.2.1 if條件 81
5.2.2 if-else條件 82
5.2.3 條件運算符 83
5.3 循環語句 84
5.3.1 for循環 85
5.3.2 while循環 86
5.3.3 do-while循環 87
5.4 多重選擇——switch語句 88
5.5 跳出循環 90
5.5.1 continue語句 90
5.5.2 break語句 90
5.5.3 goto語句 91
5.6 實戰演練——流程控制綜合套用 92
5.7 大神解惑 95
5.8 跟我學上機 96
第II篇 核 心 技 術
第6章 C++的靈魂——函式的套用 99
6.1 函式的基本結構 100
6.1.1 函式的聲明、定義和調用 100
6.1.2 參數的傳遞方式 101
6.1.3 函式的默認參數 103
6.1.4 函式的返回值 104
6.2 變數的作用域 105
6.2.1 局部變數 105
6.2.2 靜態局部變數 106
6.2.3 外部變數 107
6.2.4 暫存器變數 108
6.3 特殊函式調用方式——遞歸調用 108
6.4 內聯函式 109
6.5 預處理器 110
6.5.1 #define預處理器 110
6.5.2 #define的作用 111
6.5.3 const修飾符 112
6.6 函式的重載 113
6.7 實戰演練——漢諾塔問題函式 114
6.8 大神解惑 116
6.9 跟我學上機 116
第7章 特殊的元素集合——數組與字元串 117
7.1 一維數組 118
7.1.1 一維數組的聲明 118
7.1.2 數組初始化 119
7.1.3 數組的操作 120
7.2 二維數組和多維數組 121
7.2.1 二維數組的聲明 121
7.2.2 二維數組的使用和存取 122
7.2.3 多維數組 123
7.3 數組與函式 125
7.3.1 一維數組作為函式的參數 125
7.3.2 傳送多維數組到函式 126
7.4 字元串類 127
7.4.1 字元串的聲明 127
7.4.2 字元串的輸入和輸出 128
7.4.3 字元串處理 129
7.5 實戰演練1——判斷字元串回文 132
7.6 實戰演練2——輸出斐波那契數列 134
7.7 大神解惑 135
7.8 跟我學上機 136
第8章 靈活調用記憶體地址——指針 137
8.1 指針概述 138
8.1.1 什麼是指針 138
8.1.2 為什麼要用指針 138
8.1.3 指針的地址 139
8.2 指針變數 139
8.2.1 指針變數的聲明 139
8.2.2 指針變數的使用 140
8.3 指針與函式 141
8.3.1 指針傳送到函式中 141
8.3.2 返回值為指針的函式 142
8.3.3 函式指針 143
8.4 指針與數組 144
8.4.1 指針的算術運算 145
8.4.2 利用指針存儲一維數組的元素 146
8.4.3 利用指針傳遞一維數組到函式中 147
8.5 指針與字元串 147
8.6 const指針 148
8.7 void指針 149
8.8 指向指針的指針 149
8.9 動態記憶體配置 150
8.9.1 使用基本數據類型做動態配置 151
8.9.2 使用數組做動態配置 152
8.10 實戰演練——判斷字元串中有多少個整數 153
8.11 大神解惑 155
8.12 跟我學上機 156
第9章 靈活定義數據類型——結構體、共用體和枚舉類型 157
9.1 結構體 158
9.1.1 結構體的聲明 158
9.1.2 結構體變數的初始化與使用 159
9.1.3 結構體數組初始化 161
9.2 將結構體變數作為函式參數 162
9.2.1 將整個結構體傳送到函式 162
9.2.2 傳送結構體的地址到函式 163
9.3 共用體 164
9.3.1 共用體的定義和聲明 164
9.3.2 共用體類型的初始化和使用 165
9.3.3 struct和union的差異 166
9.4 枚舉類型 167
9.4.1 枚舉類型的定義和聲明 167
9.4.2 枚舉類型的初始化和使用 168
9.5 實戰演練——學生信息登記表 169
9.6 大神解惑 172
9.7 跟我學上機 172
第10章 主流的編程思想——認識面向對象編程 173
10.1 面向對象編程概述 174
10.1.1 面向對象編程的幾個概念 174
10.1.2 面向對象編程與面向過程編程的區別 175
10.2 認識類 175
10.2.1 類的基本概念 175
10.2.2 類的定義 175
10.2.3 類對象的生成 177
10.2.4 類對象指針 178
10.3 成員函式 180
10.4 嵌套類 182
10.5 const成員函式 182
10.6 類成員的訪問控制 184
10.6.1 私有成員 184
10.6.2 公有成員 185
10.6.3 保護成員 186
10.7 靜態成員 187
10.7.1 靜態數據成員 187
10.7.2 靜態成員函式 189
10.8 友元函式 190
10.9 實戰演練——棧類的實現 191
10.10 大神解惑 193
10.11 跟我學上機 194
第11章 類的特殊函式——構造函式和析構函式 195
11.1 構造函式初始化類對象 196
11.1.1 什麼是構造函式 196
11.1.2 使用構造函式 196
11.2 析構函式清除類對象 198
11.2.1 析構函式的概念 198
11.2.2 析構函式的調用 198
11.3 默認構造函式 200
11.4 重載構造函式 201
11.4.1 重載構造函式的作用 201
11.4.2 重載構造函式的調用 201
11.5 類對象數組的初始化 202
11.5.1 類對象數組調用 203
11.5.2 類對象數組和默認構造函式 204
11.5.3 類對象數組和析構函式 206
11.6 拷貝構造函式 207
11.6.1 拷貝構造函式的概念 207
11.6.2 深拷貝和淺拷貝 208
11.7 實戰演練——構造函式和析構函式的套用 210
11.8 大神解惑 212
11.9 跟我學上機 212
第III篇 高 級 應 用
第12章 賦予新功能——運算符的重載 215
12.1 什麼是運算符重載 216
12.1.1 運算符重載的形式 216
12.1.2 可重載的運算符 218
12.2 重載前置運算符和後置運算符 219
12.2.1 重載前置運算符 219
12.2.2 重載後置運算符 221
12.3 插入運算符和析取運算符的重載 222
12.3.1 插入運算符重載 222
12.3.2 析取運算符重載 223
12.4 常用運算符的重載 225
12.4.1 “<”運算符的重載 225
12.4.2 “+”運算符的重載 226
12.4.3 “=”賦值運算符重載 227
12.5 實戰演練——重載運算符綜合 套用 230
12.6 大神解惑 231
12.7 跟我學上機 232
第13章 實現代碼重用——類的繼承 233
13.1 繼承的基本概念 234
13.1.1 基類和繼承類 234
13.1.2 簡單的基礎實例 235
13.2 調用父類中的構造函式 240
13.3 子類存取父類成員 243
13.3.1 私有成員的存取 243
13.3.2 繼承與靜態成員 244
13.4 多繼承 246
13.5 實戰演練——繼承的綜合套用 248
13.6 大神解惑 250
13.7 跟我學上機 250
第14章 實現多態性——虛函式和抽象類 251
14.1 什麼是虛函式 252
14.1.1 虛函式的作用 252
14.1.2 動態綁定和靜態綁定 253
14.2 抽象類與純虛函式 255
14.2.1 定義純虛函式 255
14.2.2 抽象類的作用 256
14.2.3 虛析構函式 257
14.3 抽象類的多重繼承 259
14.4 虛函式表 260
14.4.1 什麼是虛函式表 260
14.4.2 繼承關係的虛函式表 262
14.5 實戰演練——抽象類的綜合套用 263
14.6 大神解惑 266
14.7 跟我學上機 266
第15章 數據存儲——C++操作檔案 267
15.1 檔案的基本概念 268
15.1.1 檔案I/O 268
15.1.2 檔案順序讀寫 271
15.1.3 隨機檔案讀寫 271
15.2 檔案的打開與關閉 273
15.2.1 檔案的打開 273
15.2.2 檔案的關閉 275
15.3 文本檔案的處理 275
15.3.1 將變數寫入檔案 275
15.3.2 將變數寫入檔案尾部 276
15.3.3 從文本檔案中讀入變數 277
15.3.4 使用get()、getline()和 put()函式 278
15.4 處理二進制檔案 280
15.5 實戰演練——檔案操作 282
15.6 大神解惑 284
15.7 跟我學上機 285
第16章 解決問題的法寶——異常處理 287
16.1 異常的基本概念 288
16.2 異常處理機制 288
16.3 拋出異常 289
16.4 重新拋出異常 291
16.5 捕獲所有異常 292
16.6 未捕捉到的異常 293
16.7 標準異常 294
16.8 異常規範 294
16.9 異常與繼承 295
16.10 自定義異常類 296
16.11 捕獲多個異常 298
16.12 實戰演練——異常處理套用 299
16.13 大神解惑 301
16.14 跟我學上機 302
第17章 C++的高級技能——模板與類型轉換 303
17.1 模板 304
17.1.1 函式模板 304
17.1.2 類模板 305
17.1.3 模板參數 307
17.1.4 模板的特殊化 308
17.1.5 重載和函式模板 309
17.2 類型識別和強制轉換運算符 311
17.2.1 運行時類型識別 311
17.2.2 強制類型轉換運算符 314
17.3 實戰演練——模板的綜合套用 316
17.4 大神解惑 318
17.5 跟我學上機 318
第18章 控制元素的存儲和訪問——容器和疊代器 321
18.1 STL 322
18.2 疊代器 322
18.3 順序容器 323
18.3.1 向量 323
18.3.2 雙端佇列 325
18.3.3 列表 326
18.4 關聯容器 327
18.4.1 集合和多集 327
18.4.2 映射和多重映射 329
18.5 容器適配器 330
18.5.1 棧 330
18.5.2 佇列 331
18.5.3 優先權佇列 332
18.6 實戰演練——容器的綜合操作 333
18.7 大神解惑 338
18.8 跟我學上機 338
第IV篇 項目開發實戰
第19章 項目實訓1——開發計算器助手 341
19.1 需求分析 342
19.2 功能分析 342
19.3 開發前的準備工作 343
19.4 系統代碼編寫 343
19.4.1 CalculatorAssistant.h和 CalculatorAssistant.cpp檔案 344
19.4.2 Complex.h和Complex.cpp 檔案 347
19.4.3 Fraction.h和Fraction.cpp 檔案 351
19.4.4 main.cpp檔案 356
19.5 系統運行 356
19.6 項目總結 358
第20章 項目實訓2——開發汽車信息管理系統 359
20.1 需求分析 360
20.2 功能分析 360
20.3 開發前的準備工作 362
20.4 系統代碼編寫 362
20.4.1 Date.h檔案 362
20.4.2 DateException.h檔案 363
20.4.3 Vehicle.h和Vehicle.cpp 檔案 364
20.4.4 VehicleManage.h和 VehicleManage.cpp檔案 366
20.4.5 Main.cpp檔案 373
20.5 系統運行 376
20.6 項目總結 378
第21章 項目實訓3——開發銀行交易系統 379
21.1 需求分析 380
21.2 功能分析 380
21.3 開發前的準備工作 381
21.4 系統代碼編寫 382
21.4.1 交易流程處理、餘額查詢、存款和取款等功能 382
21.4.2 相關設備模擬 388
21.4.3 交易設備、資料庫和賬戶等 具體實現 390
21.4.4 設備處理、交易處理、操作 處理和驗證處理等功能 394
21.4.5 主程式運行入口 398
21.5 系統運行 398
21.6 項目總結 399
第22章 項目實訓4——開發學校職工信息管理系統 401
22.1 需求分析 402
22.2 功能分析 402
22.3 開發前的準備工作 404
22.4 系統代碼編寫 404
22.4.1 職工信息的數據結構的基類屬性和成員方法 404
22.4.2 各人員類的聲明、定義 和實現 407
22.4.3 系統職工信息增刪改查功能的 聲明、定義 413
22.4.4 系統增刪改查以及選單功能的 實現 416
22.4.5 主程式運行入口 432
22.5 系統運行 432
22.6 項目總結 434