C++從零開始學(視頻教學版)(第2版)
內容描述
本書面向C++編程初學者和廣大C++編程愛好者。本書循序漸進地介紹C++應用與開發的相關基礎知識,提供大量具體操作C++編程的實例供讀者實踐。每節都清晰地闡述代碼如何工作及其作用,使讀者能在最短的時間內有效地掌握C++編程。本書配有源碼、課件與教學視頻。 全書共20章,分別介紹:為什麽要學習C++、C++程序結構、基本數據類型和數據處理、運算符與表達式、程序流程控制、函數、數組與字符串、指針、struct與其他復合數據類型、類的使用方法、對象的初始化和清除、運算符的重載、類的繼承、虛函數和抽象類、C++中的文件處理、異常處理和C++的高級概念等知識。在每章的後面提供自我評估的習題供讀者操作練習,從而加深理解。 本書適合C++初學者自學使用,也適合作為高等院校和培訓學校電腦相關專業師生的教學參考書。
目錄大綱
目 錄
第1章 學習C++—認識C++ 1
1.1 C/C++的起源 1
1.2 C++的特色 2
1.3 關於ANSI/ISO C++標準 3
1.4 語言的翻譯過程 4
1.5 編寫代碼前的準備—安裝開發環境Visual Studio 2019 5
1.6 小試身手—新建一個C++項目 8
1.7 疑難解惑 11
1.8 經典習題 13
第2章 C++程序結構 14
2.1 簡單程序 14
2.2 C++程序分析 15
2.2.1 #include指令及頭文件 15
2.2.2 main函數 16
2.2.3 變量聲明和定義 17
2.2.4 函數的聲明 19
2.2.5 關於註釋 20
2.3 輸入輸出對象 22
2.3.1 cout輸出數據 22
2.3.2 cin讀取輸入數據 25
2.4 標識符 26
2.4.1 保留字 27
2.4.2 標識符命名 27
2.5 預處理 27
2.6 命名空間 30
2.6.1 命名空間的定義 30
2.6.2 using關鍵字 32
2.6.3 命名空間std 33
2.7 小試身手—入門經典程序 34
2.8 疑難解惑 35
2.9 經典習題 36
第3章 基本數據類型 37
3.1 變量與常量 37
3.1.1 變量 37
3.1.2 常量 40
3.2 基本變量類型 43
3.2.1 整數類型 43
3.2.2 字符類型 44
3.2.3 浮點數類型 46
3.2.4 布爾類型 48
3.3 typedef 49
3.4 小試身手—測試基本數據類型的字節長度 53
3.5 疑難解惑 54
3.6 經典習題 55
第4章 運算符和表達式 56
4.1 運算符概述 56
4.1.1 賦值運算符 56
4.1.2 算術運算符 57
4.1.3 關係運算符 59
4.1.4 邏輯運算符 60
4.1.5 自增和自減運算符 62
4.1.6 位邏輯運算符 63
4.1.7 移位運算符 65
4.1.8 三元運算符 66
4.1.9 逗號運算符 67
4.1.10 類型轉換運算符 68
4.2 運算符優先級和結合性 69
4.2.1 運算符優先級 69
4.2.2 運算符結合性 70
4.3 小試身手—綜合運用運算符 72
4.4 疑難解惑 73
4.5 經典習題 74
第5章 程序流程控制 75
5.1 順序語句 75
5.2 條件判斷語句 76
5.2.1 if條件 76
5.2.2 if-else條件 78
5.2.3 條件運算符 79
5.3 循環語句 80
5.3.1 for循環 81
5.3.2 while循環 82
5.3.3 do-while循環 83
5.4 跳出循環 84
5.4.1 continue 84
5.4.2 break 85
5.5 多重選擇語句 86
5.6 小試身手—計算商品總價 88
5.7 疑難解惑 90
5.8 經典習題 92
第6章 函數 93
6.1 函數的基本結構 93
6.1.1 函數的聲明、定義和調用 93
6.1.2 參數的傳遞方式 95
6.1.3 函數的默認參數 97
6.1.4 函數的返回值 99
6.2 變量的作用域 99
6.2.1 局部變量 99
6.2.2 靜態局部變量 100
6.2.3 外部變量 101
6.2.4 寄存器變量 102
6.3 特殊函數調用方式—遞歸調用 103
6.4 內聯函數 104
6.5 預處理器 106
6.5.1 #define預處理器 106
6.5.2 #define的作用 107
6.5.3 const修飾符 108
6.6 函數的重載 108
6.7 小試身手—漢諾塔問題函數 110
6.8 疑難解惑 111
6.9 經典習題 112
第7章 數組與字符串 113
7.1 一維數組 113
7.1.1 一維數組的聲明 113
7.1.2 數組初始化 114
7.1.3 數組的操作 115
7.2 二維數組和多維數組 117
7.2.1 二維數組的聲明 117
7.2.2 二維數組的使用和存取 117
7.2.3 多維數組 119
7.3 數組與函數 121
7.3.1 一維數組作為函數的參數 121
7.3.2 傳送多維數組到函數 122
7.4 字符串類 123
7.4.1 字符串的聲明 123
7.4.2 字符串的輸入和輸出 124
7.4.3 字符串處理 125
7.5 小試身手—判斷字符串回文 129
7.6 疑難解惑 131
7.7 經典習題 132
第8章 指針 133
8.1 指針概述 133
8.1.1 什麼是指針 133
8.1.2 為什麼要用指針 134
8.1.3 指針的地址 134
8.2 指針變量 135
8.2.1 指針變量的聲明 135
8.2.2 指針變量的使用 136
8.3 指針與函數 137
8.3.1 指針傳送到函數中 137
8.3.2 返回值為指針的函數 138
8.3.3 函數指針 140
8.4 指針與數組 141
8.4.1 指針的算術運算 141
8.4.2 利用指針存儲一維數組的元素 142
8.4.3 利用指針傳輸一維數組到函數中 143
8.5 指針與字符串 144
8.6 void指針 145
8.7 指向指針的指針 145
8.8 動態內存配置 146
8.8.1 使用基本數據類型做動態配置 147
8.8.2 使用數組做動態配置 148
8.9 小試身手—判斷字符串中有多少個整數 149
8.10 疑難解惑 151
8.11 經典習題 152
第9章 struct和其他復合類型 153
9.1 struct 153
9.1.1 struct的聲明 153
9.1.2 struct變量的初始化與使用 155
9.1.3 struct數組初始化 156
9.2 將結構體變量作為函數參數 158
9.2.1 將整個結構體傳送到函數 158
9.2.2 傳送結構體的地址到函數 159
9.3 union 160
9.3.1 union的定義和聲明 160
9.3.2 union類型的初始化和使用 161
9.3.3 struct和union的差異 163
9.4 enum 163
9.4.1 enum的定義和聲明 163
9.4.2 enum的初始化和使用 164
9.5 小試身手—學生信息登記表 166
9.6 疑難解惑 168
9.7 經典習題 169
第10章 類 170
10.1 認識類 170
10.1.1 類的基本概念 170
10.1.2 類的定義 170
10.1.3 類對象的生成 172
10.1.4 類對象指針 173
10.2 成員函數 175
10.3 嵌套類 177
10.4 const成員函數 177
10.5 類成員的訪問控制 179
10.5.1 私有成員 180
10.5.2 公有成員 181
10.6 靜態成員 182
10.6.1 靜態數據成員 182
10.6.2 靜態成員函數 184
10.7 友元 186
10.8 小試身手—棧類的實現 187
10.9 疑難解惑 189
10.10 經典習題 190
第11章 構造函數和析構函數 191
11.1 構造函數初始化類對象 191
11.1.1 什麼是構造函數 191
11.1.2 使用構造函數 192
11.2 析構函數清除類對象 193
11.2.1 析構函數的概念 193
11.2.2 析構函數的調用 194
11.3 默認構造函數 195
11.4 重載構造函數 197
11.4.1 重載構造函數的作用 197
11.4.2 重載構造函數的調用 197
11.5 類對像數組的初始化 198
11.5.1 類對像數組調用 198
11.5.2 類對像數組和默認構造函數 200
11.5.3 類對像數組和析構函數 201
11.6 拷貝構造函數 203
11.6.1 拷貝構造函數的概念 203
11.6.2 深拷貝和淺拷貝 204
11.7 小試身手—構造函數和析構函數的應用 206
11.8 疑難解惑 208
11.9 經典習題 208
第12章 運算符的重載 210
12.1 什麼是運算符重載 210
12.1.1 運算符重載的形式 211
12.1.2 可重載的運算符 213
12.2 重載前置運算符和後置運算符 213
12.2.1 重載前置運算符 214
12.2.2 重載後置運算符 215
12.3 插入運算符和折取運算符的重載 217
12.3.1 插入運算符的重載 217
12.3.2 折取運算符的重載 218
12.4 常用運算符的重載 220
12.4.1 “<”運算符的重載 220
12.4.2 “+”運算符的重載 222
12.4.3 “=”運算符的重載 223
12.5 小試身手—運算符重載實例 225
12.6 疑難解惑 227
12.7 經典習題 227
第13章 類的繼承 228
13.1 面向對象編程概述 228
13.1.1 面向對象編程的幾個概念 228
13.1.2 面向對象編程與面向過程編程的區別 229
13.2 繼承的基本概念 229
13.2.1 基類和繼承類 229
13.2.2 簡單的基礎實例 231
13.2.3 調用父類中的構造函數 236
13.3 子類存取父類成員 239
13.3.1 私有成員的存取 239
13.3.2 繼承與靜態成員 241
13.3.3 多繼承 242
13.4 小試身手—繼承的應用 245
13.5 疑難解惑 246
13.6 經典習題 247
第14章 虛函數和抽像類 248
14.1 什麼是虛函數 248
14.1.1 虛函數的作用 248
14.1.2 動態綁定和靜態綁定 250
14.2 抽像類與純虛函數 252
14.2.1 定義純虛函數 252
14.2.2 抽像類的作用 253
14.2.3 虛析構函數 254
14.3 抽像類的多重繼承 256
14.4 虛函數表 257
14.4.1 什麼是虛函數表 257
14.4.2 繼承關係的虛函數表 259
14.5 小試身手—抽像類的應用 261
14.6 疑難解惑 263
14.7 經典習題 264
第 15 章 C++中的文件處理 265
15.1 文件的基本概念 265
15.1.1 文件I/O 265
15.1.2 文件順序讀寫 269
15.1.3 隨機文件讀寫 269
15.2 文件的打開與關閉 271
15.2.1 文件的打開 271
15.2.2 文件的關閉 273
15.3 文本文件的處理 274
15.3.1 將變量寫入文件 274
15.3.2 將變量寫入文件尾部 275
15.3.3 從文本文件中讀入變量 275
15.3.4 使用get()、getline()和put()函數 276
15.4 二進製文件的處理 279
15.5 小試身手—文件操作 281
15.6 疑難解惑 283
15.7 經典習題 284
第16章 異常處理 285
16.1 異常的基本概念 285
16.2 異常處理機制 285
16.3 拋出異常 287
16.4 重新拋出異常 289
16.5 捕獲所有異常 290
16.6 不是錯誤的異常 291
16.7 未捕捉到的異常 292
16.8 標準異常 292
16.9 異常規範 293
16.10 異常與繼承 294
16.11 異常處理的應用 295
16.11.1 自定義異常類 295
16.11.2 捕獲多個異常 297
16.12 小試身手—異常處理 298
16.13 疑難解惑 300
16.14 經典習題 301
第17章 模板與類型轉換 302
17.1 模板 302
17.1.1 函數模板 302
17.1.2 類模板 304
17.1.3 模板參數 306
17.1.4 模板的特殊化 307
17.1.5 重載和函數模板 308
17.2 類型識別和強制轉換運算符 310
17.2.1 運行時類型識別 310
17.2.2 強制類型轉換運算符 314
17.3 小試身手—模板應用 316
17.4 疑難解惑 318
17.5 經典習題 319
第18章 容器和迭代器 320
18.1 STL 320
18.2 迭代器 320
18.3 順序容器 322
18.3.1 向量 322
18.3.2 雙端隊列 323
18.3.3 列表 324
18.4 關聯容器 326
18.4.1 集合和多重集合 326
18.4.2 映射和多重映射 328
18.5 容器適配器 329
18.5.1 棧 329
18.5.2 隊列 330
18.5.3 優先級隊列 332
18.6 小試身手—容器操作實例 333
18.7 疑難解惑 338
18.8 經典習題 338
第19章 開發商場採購系統 339
19.1 系統需求分析 339
19.2 功能分析 340
19.3 系統代碼編寫 341
19.3.1 密碼文件和購物單文件 341
19.3.2 管理員登錄功能 342
19.3.3 採購系統的主功能 345
19.3.4 採購操作功能和驗證功能的實現 350
19.3.5 主程序運行入口 356
19.4 系統運行 357
第20章 開發推箱子遊戲 359
20.1 系統功能描述 359
20.2 系統功能分析及實現 359
20.2.1 功能分析 359
20.2.2 功能實現 360
20.3 遊戲運行 365
作者介紹
王英英,從事多年網站開發和應用程序開發,精通多種編程語言。對Python有深入研究,在Python編程開發方面有著豐富的經驗,並已出版過多本相關暢銷書,受廣大讀者認可。