C++ 開發手冊 : 基礎·案例·應用
內容描述
《C++開發手冊:基礎·案例·應用》是“計算機科學與技術手冊系列”圖書之一,該系列圖書內容全面,
以理論聯繫實際、能學到並做到為宗旨,以技術為核心,以案例為輔助,讀者全面學習基礎技術、
代碼編寫方法和具體應用項目,旨在為想入相應領域或者已經在該領域深耕多年的技術人員提供新而全的技術性內容及案例。
本書全面講解C++開發技術,分為3篇,分別是:基礎篇、案例篇、應用篇,
共29章,內容由淺入深,循序,使讀者在打好基礎的同時逐步提升。
本書內含了C++的基礎知識,並以12個典型案例解讀了在開發工作中常見的問題,代碼豐富,
步驟詳細,同時本書還配備了兩個大型應用項目,使讀者能夠同步做出產品,達到學到並且做到的目的。
本書適合C++編程自學者、C++程序開發人員和測試人員閱讀參考,
同時也可供大中專院校計算機相關專業師生使用。
目錄大綱
1篇 基礎篇
1章 C++概述
1.1 C++問世 3
1.1.1 C++的發展歷程 3
1.1.2 開發C++的代表人物 3
1.2 C++特點 4
1.3 C++開發環境 5
1.3.1 下載Visual Studio 2019 5
1.3.2 安裝Visual Studio 2019 5
1.3.3 編寫一個C++程序 7
1.3.4 編譯C++程序 9
1.3.5 運行C++程序 9
1.3.6 改終端顏色 10
1.4 C++工程項目文件 10
2章 剖析一個C++程序
2.1 一個C++程序 13
2.1.1 C++程序詳細代碼 13
2.1.2 C++程序的基本組成 13
2.2 C++結構的詳解 13
2.2.1 預處理命令 13
2.2.2 main函數(主函數) 14
2.2.3 函數體 14
2.2.4 函數返回值 14
2.2.5 註釋 14
2.3 C++程序的基本元素 15
2.3.1 標識符 15
2.3.2 關鍵字 16
2.3.3 常量 16
2.3.4 變量 17
2.4 C++代碼編寫規範 17
2.4.1 代碼寫規範的好處 18
2.4.2 如何將代碼寫規範 18
2.5 綜合案例——打印《三十六計》內容 18
2.6 實戰練習 19
3章 基本數據類型
3.1 基本數據類型概述 21
3.2 整型數據 21
3.2.1 整型常量 21
3.2.2 整型變量 21
3.3 浮點型數據 23
3.3.1 浮點型常量 23
3.3.2 浮點型變量 23
3.4 字符型數據 24
3.4.1 字符常量 24
【實例3.1】 輸出字符'A' 25
3.4.2 字符串常量 25
3.4.3 字符變量 26
【實例3.2】字符型和整型之間的秘密 26
【實例3.3】字符型數據進行算術運算 26
3.5 布爾類型數據 27
3.6 算術運算符 27
3.7 輸入與輸出數據 28
3.7.1 通過printf格式輸出數據 28
【實例3.4】使用格式輸出函數printf 29
【實例3.5】在printf函數中使用附加符號 30
3.7.2 利用scanf格式輸入數據 31
【實例3.6】輸入數據 31
3.7.3 標準I/O流 33
3.8 綜合案例——計算貸款支付額 34
3.9 實戰練習 35
4章 條件判斷語句
4.1 什麼是條件判斷 37
4.2 條件判斷語句 37
4.2.1 單條if語句 37
【實例4.1】奇偶性判斷 37
4.2.2 關係運算符與邏輯運算符 38
4.2.3 if…else語句 39
【實例4.2】成績是否優秀 40
4.2.4 else if語句 41
【實例4.3】根據成績劃分等級 41
4.3 使用條件運算符進行判斷 42
【實例4.4】3和5的整倍數 42
4.4 switch判斷語句 43
【實例4.5】成績評級 43
4.5 條件判斷語句的嵌套 44
【實例4.6】判斷是否是閏年 45
4.6 綜合案例——計算增加後的工資 46
4.7 實戰練習 46
5章 循環控制語句
5.1 什麼是循環 48
5.2 while循環 48
【實例5.1】使用while循環計算從1到10的累加 48
5.3 do…while循環 49
【實例5.2】使用do…while循環計算1到10的累加 49
5.4 while和do…while比較 50
【實例5.3】使用do…while實現自增運算 50
【實例5.4】使用while實現自增運算 51
5.5 for循環 51
【實例5.5】用for循環計算從1到10的累加 52
5.6 循環控制 53
5.6.1 break語句 53
【實例5.6】計算輸入的10個整數之和 53
5.6.2 continue語句 54
【實例5.7】使用continue計算和 54
5.7 循環嵌套 54
【實例5.8】按階梯形輸出九九乘法表 55
5.8 綜合案例——阿姆斯壯數 55
5.9 實戰練習 56
6章 封裝函數使程序模塊化
6.1 函數概述 58
6.1.1 定義函數 58
6.1.2 聲明和使用函數 58
【實例6.1】函數的應用 58
6.2 函數的參數 59
6.2.1 形參與實參 59
6.2.2 設置缺省值 59
【實例6.2】默認參數比大小 59
6.3 從函數中返回 60
6.3.1 函數返回值 60
6.3.2 了解空函數 61
6.4 遞歸調用函數 61
【實例6.3】求n的階乘 61
6.5 重載函數的使用 62
【實例6.4】重載函數的應用 62
6.6 生存週期與作用域 63
6.6.1 變量的作用域 63
【實例6.5】變量的作用域 63
6.6.2 變量的生存週期 64
6.6.3 變量的存儲方式 64
【實例6.6】輸出不同生命期的變量值 65
【實例6.7】使用static變量實現累加 66
6.7 名稱空間 67
6.8 綜合案例——提款機的記錄 68
6.9 實戰練習 69
7章 使用數組獲取連續空間
7.1 一維數組 71
7.1.1 聲明一維數組 71
7.1.2 一維數組的元素 71
7.1.3 初始化一維數組 71
【實例7.1】一維數組賦值 72
7.2 二維數組 72
7.2.1 聲明二維數組 72
7.2.2 引用二維數組元素 73
7.2.3 初始化二維數組 73
【實例7.2】將二維數組行列對換 74
7.3 字符數組 75
7.3.1 聲明一個字符串數組 75
7.3.2 字符串數組賦值 75
7.3.3 字符數組的一些說明 75
7.3.4 越界引用 76
【實例7.3】字符串中的非法字符 76
【實例7.4】輸出字符數組中內容 77
7.3.5 字符串處理函數 77
【實例7.5】字符串連接函數strcat 78
【實例7.6】字符串拷貝函數strcpy 79
【實例7.7】字符串比較函數strcmp 80
7.4 字符串類型 80
7.4.1 使用本地字符串類型string 80
【實例7.8】修改指定字符 81
7.4.2 連接string字符串 81
【實例7.9】字符串連接 81
7.4.3 比較string字符串 82
【實例7.10】比較兩個string字符串的大小 82
7.4.4 定義string類型數組 82
【實例7.11】string類型的數組 82
7.5 綜合案例——名字排序 83
7.6 實戰練習 84
8章 C++指針
8.1 指針概述 86
8.1.1 保存變量地址 86
【實例8.1】輸出變量的地址值 87
8.1.2 指針的運算 89
【實例8.2】輸出int指針運算後地址值 89
8.1.3 指向空的指針與空類型指針 89
【實例8.3】空類型指針的使用 90
8.1.4 指向常量的指針與指針常量 90
【實例8.4】指針與const 91
8.2 指針在函數中的應用 91
8.2.1 傳遞地址 91
【實例8.5】調用自定義函數交換兩個變量值 91
8.2.2 指向函數入口地址 92
8.2.3 空指針調用函數 93
【實例8.6】使用空類型指針執行函數 93
8.2.4 從函數中返回指針 94
【實例8.7】指針做返回值 94
8.3 指針與數組 94
8.3.1 存儲數組元素 94
8.3.2 保存一維數組首地址 95
【實例8.8】通過指針變量獲取數組中元素 95
8.3.3 保存二維數組首地址 96
【實例8.9】使用指針變量遍歷二維數組 97
【實例8.10】指針與二維數組 98
8.3.4 指針與字符數組 98
【實例8.11】連接兩個字符串 99
8.4 安全使用指針 99
8.4.1 內存分配 99
【實例8.12】動態分配空間 99
8.4.2 內存安全 100
8.5 綜合案例——你輸入我尋找 100
8.6 實戰練習 101
9章 引用
9.1 什麼是引用 103
9.1.1 引用的概念 103
【實例9.1】輸出引用 103
9.1.2 右值引用 104
【實例9.2】右值引用的定義 104
9.2 引用在函數中的應用 105
9.2.1 引用作為函數的形參 105
【實例9.3】通過引用交換數值 105
9.2.2 指針與引用 106
【實例9.4】指針的引用作參數 106
9.2.3 右值引用傳遞參數 107
【實例9.5】右值引用傳遞參數 107
9.3 綜合案例——排序 108
9.4 實戰練習 109
10章 構造數據類型
10.1 結構體 111
10.1.1 結構體定義 111
10.1.2 結構體變量 111
10.1.3 結構體成員及初始化 112
【實例10.1】展示老師的基本信息 112
【實例10.2】輸出新來學生信息 113
10.1.4 結構體的嵌套 114
【實例10.3】展示房間位置 114
10.1.5 結構體大小 115
10.2 重命名數據類型 116
10.3 結構體與函數 116
10.3.1 結構體變量做函數參數 116
【實例10.4】小貓信息 116
10.3.2 結構體指針做函數參數 117
【實例10.5】登記新員工信息 117
10.4 結構體數組 118
10.4.1 結構體數組聲明與引用 118
10.4.2 指針訪問結構體數組 119
【實例10.6】顯示銷售前5名的產品 119
10.5 共用體 119
10.5.1 共用體的定義與聲明 119
10.5.2 共用體的大小 120
【實例10.7】選擇一種交通工具回家 121
10.5.3 共用體的特點 121
10.6 枚舉類型 122
10.6.1 枚舉類型的聲明 122
10.6.2 枚舉類型變量 122
【實例10.8】選擇喜歡的顏色 123
10.7 使用宏定義替換複雜的數據 124
【實例10.9】求兩個數的乘積 125
10.8 綜合案例——選票系統 126
10.9 實戰練習 128
11章 面向對象編程
11.1 面向對象的編程思想 130
11.1.1 面向對象 130
11.1.2 面向對象編程的特點 130
11.2 類與對象 131
11.2.1 聲明與定義類 131
11.2.2 在源文件中包含頭文件 132
11.2.3 實現一個類 132
11.2.4 實例化一個對象 135
11.2.5 訪問類成員 135
【實例11.1】通過實例化的對象訪問類成員 136
11.3 類的構造與析構 137
11.3.1 構造函數概述 137
11.3.2 利用構造函數初始化成員變量 137
11.3.3 析構一個類 138
【實例11.2】析構函數的調用 138
11.4 定義靜態成員 139
11.5 通過指針作對象 140
【實例11.3】函數指針調用類成員 140
11.6 隱含的this指針 141
【實例11.4】同一個類的不同對像數據 141
11.7 聲明const對象 142
【實例11.5】標準尺寸 142
11.8 申請對像數組 144
【實例11.6】批量化生產 144
11.9 C++中的友元 146
11.9.1 友元機制 146
11.9.2 定義友元類 147
11.10 重載運算符 148
11.10.1 重載算術運算符 148
【實例11.7】重載加號運算符 148
11.10.2 重載比較運算符 149
【實例11.8】重載比較運算符 149
11.11 綜合案例——銷毀電話卡 150
11.12 實戰練習 151
12章 繼承、派生、多態
12.1 類的繼承 153
12.1.1 定義派生類 153
【實例12.1】以共有方式繼承 153
12.1.2 訪問類成員 154
12.1.3 類的派生方式 155
12.1.4 父類和子類的構造順序 157
【實例12.2】構造函數訪問順序 157
12.1.5 子類顯式調用父類構造函數 158
【實例12.3】子類顯式調用父類的構造函數 158
12.1.6 嵌套定義多個類 159
12.2 多重繼承 160
12.2.1 聲明多重繼承的派生類 161
【實例12.4】派生類的多重繼承 161
12.2.2 注意避免二義性 162
12.2.3 多重繼承的構造順序 162
【實例12.5】多重繼承的構造順序 162
12.3 C++的多態性 163
12.3.1 虛函數概述 164
12.3.2 動態綁定 164
【實例12.6】輸出作員姓名 164
12.3.3 虛繼承機制 165
【實例12.7】虛繼承 165
12.4 抽像類介紹 166
12.4.1 創建純虛函數 167
【實例12.8】計算圓形、矩形面積 167
12.4.2 實現抽像類中的成員函數 168
【實例12.9】輸出作員和系統管理員姓名 168
12.5 異常處理 169
12.5.1 拋出異常 169
12.5.2 捕獲異常 170
12.5.3 異常匹配 171
12.5.4 標準異常 171
12.6 綜合案例——等邊多邊形 172
12.7 實戰練習 173
13章 C++模板使用
13.1 函數模板 175
13.1.1 定義函數模板 175
13.1.2 使用函數模板 176
13.1.3 重載函數模板 176
【實例13.1】求出字符串的小值 177
13.2 類模板 177
13.2.1 定義類模板 177
13.2.2 執行時指定參數 179
【實例13.2】簡單類模板 179
13.2.3 設置默認模板參數 180
【實例13.3】默認模板參數 180
13.2.4 為具體類型的參數提供默認值 180
【實例13.4】為具體類型的參數提供默認值 180
13.2.5 越界檢測 181
13.3 模板的使用方法 181
13.3.1 定制類模板 182
【實例13.5】定制類模板 182
13.3.2 定制類模板成員函數 183
【實例13.6】定制類模板成員函數 183
13.4 鍊錶類模板 184
13.4.1 建立單向鍊錶 184
【實例13.7】簡單鍊錶的實現 184
13.4.2 鍊錶類模板的使用 186
【實例13.8】使用CList類模板 186
13.4.3 類模板的靜態數據成員 188
【實例13.9】在類模板中使用靜態數據成員 188
13.5 綜合案例——不同類型數組管理 189
13.6 實戰練習 190
14章 標準模板庫STL
14.1 序列容器 192
14.1.1 對比容器適配器與容器 192
14.1.2 對比迭代器與容器 192
14.1.3 向量類模板 193
【實例14.1】vector類模板的使用 194
14.1.4 雙端隊列類模板 196
【實例14.2】雙端隊列類模板應用 197
14.1.5 鍊錶類模板 198
【實例14.3】從小到大排序 199
14.2 結合容器 200
14.2.1 set類模板 200
【實例14.4】set集合應用 201
14.2.2 multiset類模板 201
【實例14.5】在集合中查找元素 203
14.2.3 map類模板 203
【實例14.6】使用下標插入新元素 204
14.2.4 multimap類模板 205
【實例14.7】插入新元素 205
14.3 算法 206
14.3.1 非修正序列算法 206
14.3.2 修正序列算法 206
14.3.3 排序算法 207
14.3.4 數值算法 208
14.4 迭代器 209
14.4.1 輸出迭代器 209
【實例14.8】輸出迭代器 209
14.4.2 輸入迭代器 210
【實例14.9】輸入迭代器 210
14.4.3 前向迭代器 210
【實例14.10】前向迭代器 210
14.4.4 雙向迭代器 211
【實例14.11】雙向迭代器 211
14.4.5 隨機訪問迭代器 212
【實例14.12】隨機訪問迭代器 212
14.5 lambda表達式 212
【實例14.13】lambda表達式的使用 212
14.6 綜合案例——存儲學生信息 213
14.7 實戰練習 214
15章 利用文件處理數據
15.1 流簡介 216
15.1.1 C++中的流類庫 216
15.1.2 類庫的使用 216
15.1.3 ios類中的枚舉常量 216
15.1.4 流的輸入/輸出 217
【實例15.1】字符相加並輸出 217
15.2 文件打開 217
15.2.1 打開方式 217
15.2.2 打開文件同時創建文件 219
【實例15.2】創建文件 219
15.3 文件的讀寫 219
15.3.1 文件流 219
【實例15.3】讀寫文件 220
15.3.2 寫文本文件 221
【實例15.4】向文本文件寫入數據 221
15.3.3 讀取文本文件 222
【實例15.5】讀取文本文件內容 222
15.3.4 二進製文件的讀寫 222
【實例15.6】使用read讀取文件 223
15.3.5 實現文件複製 223
15.4 文件指針移動作 224
15.4.1 文件錯誤與狀態 224
15.4.2 文件的追加 225
15.4.3 文件結尾的判斷 225
【實例15.7】判斷文件結尾 226
15.4.4 在指定位置讀寫文件 226
15.5 文件和流的關聯和分離 227
15.6 刪除文件 228
15.7 綜合案例——保存車信息 229
15.8 實戰練習 230
2篇 案例篇
16章 銀行自動提款機——條件語句+循環語句實現
16.1 案例效果預覽 232
16.2 案例準備 233
16.3 業務流程 233
16.4 實現過程 234
16.4.1 用Visual Studio 2019創建新項目 234
16.4.2 設計選擇界面 235
16.4.3 選擇數字1 236
16.4.4 選擇數字2 236
16.4.5 選擇數字3 237
17章 猜數字遊戲——自定義函數+for+條件語句+隨機函數實現
17.1 案例效果預覽 239
17.2 案例準備 240
17.3 業務流程 240
17.4 實現過程 241
17.4.1 用Visual Studio 2019創建新項目 241
17.4.2 設計思路 242
17.4.3 文件引用 242
17.4.4 實現猜數字 242
17.4.5 光標定位 243
17.4.6 主函數 243
18章 燒杯平衡水——指針+自定義函數實現
18.1 案例效果預覽 245
18.2 案例準備 246
18.3 業務流程 246
18.4 實現過程 247
18.4.1 用Visual Studio 2019創建新項目 247
18.4.2 文件引用 247
18.4.3 設計平衡水量的函數 247
18.4.4 設計輸入燒杯水量 248
18.4.5 比較燒杯的水量情況 248
19章 挑選硬盤 ——類+條件語句+for循環實現
19.1 案例效果預覽 250
19.2 案例準備 251
19.3 業務流程 251
19.4 實現過程 251
19.4.1 用Visual Studio 2019創建新項目 251
19.4.2 文件引用 252
19.4.3 設計硬盤類 252
19.4.4 比較 252
19.4.5 程序入口函數 253
20章 有事請留言——自定義頭文件+類實現
20.1 案例效果預覽 255
20.2 案例準備 255
20.3 業務流程 256
20.4 實現過程 256
20.4.1 用Visual Studio 2019創建新項目 256
20.4.2 設計用戶信息頭文件 257
20.4.3 設計用戶源文件 257
20.4.4 設計留言信息 257
21章 撲克牌牌面比較——枚舉類型+類+重載實現
21.1 案例效果預覽 259
21.2 案例準備 259
21.3 業務流程 260
21.4 實現過程 260
21.4.1 用Visual Studio 2019創建新項目 260
21.4.2 文件引用 261
21.4.3 定義撲克牌牌面 261
21.4.4 定義牌面比較類 261
21.4.5 程序入口函數 262
22章 情侶戀愛紀念日——算術運算符+自定義函數+時間函數實現
22.1 案例效果預覽 263
22.2 案例準備 264
22.3 業務流程 264
22.4 實現過程 264
22.4.1 用Visual Studio 2019創建新項目 264
22.4.2 文件引用 265
22.4.3 設計計算天數函數 265
22.4.4 獲取當前時間 266
22.4.5 輸出戀愛天數 266
23章 心跳的過程——數學函數+ Windows API+ TCHAR實現
23.1 案例效果預覽 268
23.2 案例準備 269
23.3 業務流程 269
23.4 實現過程 269
23.4.1 用Visual Studio 2019創建新項目 269
23.4.2 文件引用 269
23.4.3 設計心字符的位置 270
23.4.4 設計心的高度 270
23.4.5 設計跳動的心 270
24章 讀心術——條件判斷+輸入輸出實現
24.1 案例效果預覽 272
24.2 案例準備 273
24.3 業務流程 273
24.4 實現過程 273
24.4.1 用Visual Studio 2019創建新項目 273
24.4.2 文件引用 274
24.4.3 設置5次數字排列 274
24.4.4 輸出結果 276
25章 搞怪自戀小程序——Windows函數+條件判斷嵌套實現
25.1 案例效果預覽 278
25.2 案例準備 279
25.3 業務流程 279
25.4 實現過程 280
25.4.1 用Visual Studio 2019創建新項目 280
25.4.2 文件引用 281
25.4.3 準備界面 281
25.4.4 初始化控制台 281
25.4.5 一次選擇 282
25.4.6 二次選擇 282
26章 打地鼠小遊戲——全局變量+ delete+指針實現
26.1 案例效果預覽 285
26.2 案例準備 287
26.3 業務流程 287
26.4 實現過程 287
26.4.1 用Visual Studio 2019創建新項目 287
26.4.2 文件引用 288
26.4.3 全局變量以及函數聲明 288
26.4.4 武器店設計 288
26.4.5 藥店設計 290
26.4.6 打小地鼠情況 291
26.4.7 打大地鼠情況 292
26.4.8 程序入口函數 294
27章 快樂吃豆子——類+win32繪圖+鍵盤消息處理實現
27.1 案例效果預覽 296
27.2 案例準備 297
27.3 業務流程 297
27.4 實現過程 298
27.4.1 用Visual Studio 2019創建窗口程序 298
27.4.2 碰撞檢測的實現 300
27.4.3 地圖類的設計 302
27.4.4 數據更新 304
27.4.5 繪圖 306
27.4.6 窗口設計 307
3篇 應用篇
28章 坦克動盪遊戲
28.1 系統需求分析 316
28.1.1 系統概述 316
28.1.2 系統可行性分析 316
28.1.3 功能性需求分析 316
28.2 系統功能設計 316
28.2.1 系統功能結構 316
28.2.2 系統業務流程 317