內容簡介
《21天學通C++(第4版)》從初學者的角度較全面地介紹了C++的相關知識,較系統地介紹了C++語言的基礎內容。《21天學通C++(第4版)》包括6 篇共21 章的內容。其中,第1 篇是C++數據表達篇,包括C++入門、變數和數據類型、運算符和表達式以及程式控制結構等;第2 篇是C++面向過程設計篇,包括函式、編譯預處理、數組、指針和構造數據類型等內容;第3 篇是C++面向對象編程篇,主要包括類和對象、繼承、多態、運算符重載和輸入/輸出流等內容;第4 篇主要介紹了C++高級特性,內容包括檔案、命名空間和引用與記憶體管理;第5篇的內容主要是C++編程實踐,主要分析了標準模板庫STL、模板與C++標準庫和異常處理等;最後一篇結合學生成績管理系統開發實例,講解如何使用C++進行實際開發。
編輯推薦
◆基礎知識->核心技術->典型案例->綜合練習->項目案例
◆239個典型實例,1個項目案例,44個練習題,61個面試題
◆一線開發人員全程貼心講解,上手毫不費力
◆超值DVD內含12小時多媒體教學視頻,以及豐富贈品!
內容提要
《21天學通C++(第4版)》從初學者的角度較全面地介紹了C++的相關知識,較系統地介紹了C++語言的基礎內容。《21天學通C++(第4版)》包括6 篇共21 章的內容。其中,第1 篇是C++數據表達篇,包括C++入門、變數和數據類型、運算符和表達式以及程式控制結構等;第2 篇是C++面向過程設計篇,包括函式、編譯預處理、數組、指針和構造數據類型等內容;第3 篇是C++面向對象編程篇,主要包括類和對象、繼承、多態、運算符重載和輸入/輸出流等內容;第4 篇主要介紹了C++高級特性,內容包括檔案、命名空間和引用與記憶體管理;第5篇的內容主要是C++編程實踐,主要分析了標準模板庫STL、模板與C++標準庫和異常處理等;最後一篇結合學生成績管理系統開發實例,講解如何使用C++進行實際開發。
《21天學通C++(第4版)》適合沒有編程基礎的C++語言初學者作為入門教程,也可作為大中專院校師生和培訓班的教材,對於C++語言開發的愛好者,《21天學通C++(第4版)》也有較大的參考價值。
《21天學通C++(第4版)》附帶DVD 光碟1 張,內容包括超大容量教學視頻、電子教案(PPT)、原始碼等。
圖書目錄
第一篇 C++數據表達篇
第1 章 C++入門( 教學視頻:31 分鐘) 1
1.1 C++概述 1
1.1.1 C++的歷史沿革 1
1.1.2 C++與面向對象 1
1.1.3 從C 到C++ 2
1.2 程式設計方法 3
1.2.1 結構化程式設計 3
1.2.2 面向對象程式設計 4
1.2.3 程式設計方法比較 4
1.3 C++開發環境——Visual C++ 6.0 5
1.3.1 工作區 5
1.3.2 編輯區(Editor Area) 6
1.3.3 輸出視窗(Output Panel) 6
1.3.4 選單欄、工具列、狀態欄 7
1.4 第一個C++程式——Hello World 7
1.4.1 創建源程式 7
1.4.2 編譯連線 9
1.4.3 調試運行 9
1.5 C++源程式組成元素 10
1.5.1 基本組成 10
1.5.2 基本符號 11
1.5.3 標識符 11
1.5.4 保留字 11
1.5.5 分隔設定 12
1.6 小結 12
1.7 習題 12
第2 章 變數和數據類型( 教學視頻:32 分鐘) 16
2.1 常量 16
2.1.1 聲明常量 16
2.1.2 常量的套用 17
2.2 變數 19
2.2.1 聲明變數 19
2.2.2 變數的命名規則 19
2.2.3 變數的作用範圍 20
2.2.4 變數的套用 21
2.3 基本數據類型 22
2.3.1 整型 23
2.3.2 字元型 24
2.3.3 浮點型 26
2.3.4 布爾型 26
2.4 類型轉換 27
2.4.1 隱式轉換 27
2.4.2 顯式轉換 28
2.5 小結 29
2.6 習題 29
第3 章 運算符和表達式( 教學視頻:34 分鐘) 32
3.1 運算符 32
3.1.1 算術運算符 32
3.1.2 賦值運算符 34
3.1.3 關係運算符 35
3.1.4 邏輯運算符 35
3.1.5 條件運算符 36
3.1.6 逗號運算符 37
3.1.7 位運算符 37
3.1.8 sizeof 運算符 38
3.1.9 運算符的優先權 38
3.2 表達式 39
3.2.1 算術表達式 40
3.2.2 關係表達式 40
3.2.3 邏輯表達式 41
3.2.4 條件表達式 42
3.2.5 賦值表達式 43
3.2.6 逗號表達式 43
3.3 語句 44
3.3.1 語句中的空格 44
3.3.2 空語句 45
3.3.3 聲明語句 45
3.3.4 賦值語句 46
3.4 小結 46
3.5 習題 46
第4 章 程式控制結構( 教學視頻:32 分鐘) 50
4.1 順序結構 50
4.1.1 表達式語句 50
21 天學通C++(第4 版)
4.1.2 輸入語句 51
4.1.3 輸出語句 51
4.1.4 格式控制符 52
4.1.5 套用示例 55
4.2 選擇結構 56
4.2.1 if 語句 56
4.2.2 ifelse 語句 57
4.2.3 多重if…else 語句 58
4.2.4 switch 語句 60
4.2.5 套用示例 62
4.3 循環結構 63
4.3.1 for 語句 63
4.3.2 while 語句 64
4.3.3 dowhile 語句 65
4.3.4 多重循環 66
4.3.5 套用示例 67
4.4 轉向語句 68
4.5 小結 69
4.6 習題 69
第二篇 C++面向過程設計篇
第5 章 函式( 教學視頻:36 分鐘) 73
5.1 定義函式 73
5.1.1 函式概述 73
5.1.2 定義函式 74
5.1.3 套用示例 75
5.2 函式參數及原型 76
5.2.1 函式的參數及返回值 76
5.2.2 函式原型 77
5.2.3 main()函式 77
5.2.4 帶參數的main()函式 79
5.3 調用函式 80
5.3.1 函式調用格式 80
5.3.2 傳值調用 81
5.3.3 引用調用 82
5.3.4 嵌套調用 83
5.3.5 遞歸調用 83
5.3.6 帶默認形參值的函式 85
5.4 變數的作用域 85
5.4.1 局部變數 86
5.4.2 全局變數 87
5.5 函式的作用域 88
5.6 函式重載 89
5.6.2 參數類型不同的函式重載 90
5.6.3 參數個數上不同的重載函式 91
5.7 小結 92
5.8 習題 92
第6 章 編譯預處理( 教學視頻:37 分鐘) 95
6.1 預處理命令 95
6.2 宏 95
6.2.1 宏概述 95
6.2.2 不帶參數的宏定義 96
6.2.3 取消宏 97
6.2.4 宏嵌套 99
6.2.5 帶參數的宏定義 99
6.2.6 內聯函 103
6.2.7 宏與函式的區別 104
6.3 檔案包含 105
6.3.1 #include 命令 105
6.3.2 合理使用檔案包含 106
6.4 條件編譯 107
6.4.1 #ifdef 形式 108
6.4.2 #ifndef 形式 109
6.4.3 #if 形式 109
6.5 其他命令 110
6.5.1 #error 命令 110
6.5.2 #line 命令 111
6.6 小結 111
6.7 習題 111
第7 章 數組( 教學視頻:35 分鐘) 114
7.1 聲明數組 114
7.1.1 聲明一維數組 114
7.1.2 聲明多維數組 115
7.2 引用數組 116
7.2.1 引用一維數組 116
7.2.2 引用多維數組 117
7.3 數組的賦值 118
7.3.1 初始化數組 118
7.3.2 通過賦值表達式賦值 120
7.3.3 通過輸入語句賦值 121
7.3.4 通過循環語句賦值 121
7.3.5 多維數組的賦值 123
7.4 字元串 123
7.4.1 傳統字元串 124
7.4.2 字元數組 126
7.5 數組與函式 127
7.6 數組套用 129
7.6.1 順序查找 129
7.6.2 折半查找 130
7.6.3 排序 133
7.7 小結 135
7.8 習題 135
第8 章 指針( 教學視頻:33 分鐘) 138
8.1 指針概述 138
8.1.1 指針是什麼 138
8.1.2 定義指針 139
8.1.3 指針的初始化 139
8.2 指針的運算 141
8.2.1 取地址與取值運算 141
8.2.2 指針的算術運算 142
8.2.3 指針的關係運算 144
8.2.4 指針的賦值運算 145
8.2.5 void 指針和const 指針 145
8.3 指針與數組 147
8.3.1 訪問數組元素的方法 147
8.3.2 多維數組元素的訪問 149
8.3.3 數組指針與指針數組 150
8.4 指針與函式 151
8.4.1 指針作為函式參數 151
8.4.2 指針型函式 153
8.4.3 函式指針 154
8.5 指針與字元串 155
8.6 二級指針 156
8.7 小結 157
8.8 習題 158
第9 章 構造數據類型( 教學視頻:34 分鐘) 161
9.1 結構體 161
9.1.1 結構體概述 161
9.1.2 結構體類型說明 162
9.1.3 定義結構體類型變數 163
9.1.4 初始化結構體變數 164
9.1.5 引用結構體成員變數 166
9.1.6 結構體作為函式參數 168
9.2 共用體 169
9.2.1 共用體類型說明 169
9.2.2 定義共用體類型變數 170
9.2.3 引用共用體成員變數 170
9.3 枚舉 172
9.3.1 定義枚舉類型 172
9.3.2 定義枚舉類型變數 174
9.3.3 引用枚舉類型變數 175
9.4 類型重定義typedef 176
9.5 位域 178
9.5.1 定義位域變數 178
9.5.2 使用位域 179
9.6 小結 180
9.7 習題 181
第三篇 C++面向對象編程篇
第10 章 類和對象( 教學視頻:35 分鐘) 184
10.1 類 184
10.1.1 什麼是類 184
10.1.2 結構到類 185
10.1.3 類的聲明 187
10.1.4 類的訪問控制 188
10.1.5 類的定義 190
10.2 對象 192
10.2.1 對象概述 192
10.2.2 對象數組 193
10.3 構造函式 195
10.3.1 構造函式的概念 195
10.3.2 構造函式的聲明和定義 195
10.3.3 構造函式的調用 197
10.3.4 不帶參數的構造函式 197
10.3.5 帶有默認參數的構造函式 198
10.3.6 構造函式的重載 200
10.4 拷貝構造函式 201
10.4.1 定義拷貝構造函式 201
10.4.2 調用拷貝構造函式 202
10.4.3 默認拷貝構造函式 204
10.5 析構函式 205
10.6 友元 206
10.6.1 友元函式 206
10.6.2 友元成員 208
10.6.3 友元類 209
10.7 小結 211
10.8 習題 211
第11 章 繼承( 教學視頻:38 分鐘) 215
11.1 繼承與派生 215
11.1.1 繼承與派生概述 215
11.1.2 聲明派生類 216
11.2 訪問控制 216
11.2.1 公有繼承 217
11.2.2 私有派生 219
11.2.3 保護繼承 220
11.3 派生類的構造函式和析構函式 224
11.3.1 執行順序和構建原則 224
11.3.2 派生類的構造函式 224
11.3.3 派生類析構函式的構建 225
11.4 多重繼承 227
11.4.1 二義性問題 227
11.4.2 聲明多重繼承 229
11.4.3 多重繼承的構造函式和析構函式 231
11.5 虛基類 233
11.5.1 虛基類的引入 233
11.5.2 定義虛基類 234
11.5.3 虛基類的構造函式和初始化 236
11.6 小結 237
11.7 習題 237
第12 章 多態( 教學視頻:34 分鐘) 242
12.1 多態 242
12.1.1 什麼是多態 242
12.1.2 多態的作用 243
12.1.3 多態的引入 243
12.2 函式重載 245
12.3 虛函式 246
12.3.1 虛函式的引入 246
12.3.2 定義虛函式 248
12.3.3 使用虛函式 249
12.3.4 多重繼承和虛函式 250
12.3.5 虛函式的注意事項 252
12.4 抽象類 252
12.4.1 純虛函式 252
12.4.2 抽象類 254
12.5 小結 255
12.6 習題 256
第13 章 運算符重載( 教學視頻:31 分鐘) 259
13.1 運算符重載簡介 259
13.1.1 運算符重載的定義 259
13.1.2 運算符重載的特點 260
13.1.3 運算符重載的規則 261
13.2 運算符重載的形式 262
13.2.1 重載為類的成員函式 262
13.2.2 雙目運算符重載為成員函式 262
13.2.3 單目運算符重載為成員函式 263
13.2.4 運算符重載為類的友元函式 265
13.2.5 雙目運算符重載為友元函式 265
13.2.6 單目運算符重載為友元函式 266
13.2.7 成員運算符函式與友元運算符函式的比較 268
13.3 特殊運算符的重載 268
13.3.1 “++”和“--”的重載 268
13.3.2 賦值運算符“=”的重載 270
13.3.3 下標運算符“[ ]”的重載 272
13.4 類類型轉換 273
13.5 小結 275
13.6 習題 275
第14 章 輸入/輸出流( 教學視頻:34 分鐘) 279
14.1 輸入/輸出流的引入 279
14.1.1 printf 與scanf 的缺陷 279
14.1.2 輸入/輸出流簡介 280
14.1.3 輸入/輸出流類層次 281
14.2 標準輸入/輸出流 282
14.2.1 標準輸出流對象 282
14.2.2 標準輸入流對象 283
14.2.3 標準錯誤輸出流對象 284
14.3 輸入/輸出流成員函式 285
14.3.1 get()函式:輸出字元串 285
14.3.2 getline()函式:獲取字元串 287
14.4 輸入/輸出的格式控制 287
14.4.1 用ios 類的成員函式進行格式控制 287
14.4.2 使用格式控制符進行格式控制 290
14.5 用戶自定義數據類型的輸入/輸出 292
14.5.1 重載輸出運算符“<<” 292
14.5.2 重載輸入運算符“>>” 293
14.6 小結 295
14.7 習題 295
第四篇 C++高級特性篇
第15 章 檔案( 教學視頻:28 分鐘) 298
15.1 檔案和流 298
15.1.1 檔案概述 298
15.1.2 檔案流類 299
15.2 檔案的打開與關閉 300
15.2.1 打開檔案 300
15.2.2 關閉檔案 302
15.3 檔案的順序讀寫 303
15.3.1 讀寫文本檔案 303
15.3.2 文本檔案套用示例 304
15.3.3 二進制檔案概述 306
15.3.4 讀寫二進制檔案 306
15.4 檔案的隨機讀寫 309
15.5 小結 311
15.6 習題 311
第16 章 命名空間( 教學視頻:34 分鐘) 314
16.1 命名空間 314
16.1.1 什麼是命名空間 314
16.1.2 定義命名空間 315
16.2 使用命名空間 317
16.2.1 使用作用域運算符引用成員 317
16.2.2 使用using 指令 318
16.2.3 使用using 聲明 319
16.2.4 using 指令與using 聲明的比較 320
16.3 類的作用域 320
16.3.1 靜態數據成員 320
16.3.2 靜態成員函式 322
16.4 作用域 323
16.4.1 局部作用域 323
16.4.2 全局作用域 325
16.4.3 作用域嵌套 326
16.5 this 指針 327
16.6 小結 329
16.7 習題 329
第17 章 引用與記憶體管理( 教學視頻:31 分鐘) 332
17.1 引用 332
17.1.1 引用概述 332
17.1.2 引用的使用 333
17.2 引用的操作 334
17.2.1 引用作為函式參數 334
17.2.2 引用作為返回值 335
17.3 動態記憶體分配 336
17.3.1 申請動態記憶體 336
17.3.2 釋放空間 337
17.3.3 malloc 和free 庫函式 339
17.4 const 引用 340
17.5 指針與引用的區別 342
17.6 小結 343
17.7 習題 343
第五篇 C++編程實踐篇
第18 章 標準模板庫STL( 教學視頻:30 分鐘) 346
18.1 標準模板庫 346
18.1.1 STL 概述 346
18.1.2 STL 的引入 346
18.1.3 STL 的組成 347
18.2 算法 348
18.3 容器 350
18.3.1 什麼是容器 350
18.3.2 向量 350
18.3.3 列表 352
18.3.4 集合 354
18.3.5 雙端佇列 355
18.3.6 棧 356
18.3.7 映射和多重映射 357
18.4 疊代器 358
18.5 小結 360
18.6 習題 360
第19 章 模板與C++標準庫( 教學視頻:33 分鐘) 363
19.1 模板概述 363
19.1.1 模板簡介 363
19.1.2 模板的引入 364
19.2 函式模板 365
19.2.1 定義函式模板 365
19.2.2 生成模板函式 366
19.2.3 函式模板的異常處理 367
19.3 類模板 368
19.3.1 定義類模板 368
19.3.2 模板類 369
19.4 C++標準庫概述 371
19.5 字元串庫 372
19.5.1 讀寫字元串 372
19.5.2 字元串賦值 372
19.5.3 字元串比較 373
19.5.4 字元串長度和空字元串 374
19.6 小結 376
19.7 習題 376
第20 章 異常處理( 教學視頻:31 分鐘) 379
20.1 錯誤與異常 379
20.1.1 什麼是異常 379
20.1.2 異常處理的基本思想 379
20.2 異常處理的實現 381
20.2.1 使用try/catch 捕獲異常 381
20.2.2 使用throw 拋出異常 382
20.2.3 套用示例 383
20.3 類和結構的異常處理 384
20.3.1 異常處理中的構造和析構 385
20.3.2 處理結構類型的異常 386
20.4 異常處理機制 387
20.5 小結 389
20.6 習題 389
第六篇 實例篇
第21 章 簡單學生成績管理系統開發實例( 教學視頻:31 分鐘) 392
21.1 需求分析 392
21.2 總體設計 392
21.3 功能模組實現 393
21.3.1 成績錄入模組 394
21.3.2 成績統計模組 394
21.3.3 成績排名模組 395
21.3.4 成績查詢模組 397
21.3.5 輸出模組 398
21.4 系統集成 398
21.5 系統實現 400
21.5.1 結構和變數定義部分 401
21.5.2 功能函式定義部分 402
21.5.3 主函式部分 403
21.6 小結 405
前言
千里之行,始於足下!——老子
“21 天學編程系列”自2009 年1 月上市以來一直受到廣大讀者的青睞。該系列中的大部分圖書從一上市就登上了編程類圖書銷售排行榜的前列,很多大中專院校也將該系列中的一些圖書作為教材使用,目前這些圖書已經多次印刷、改版。可以說,“21 天學編程系列”是自2009年以來國內原創計算機編程圖書最有影響力的品牌之一。
為了使該系列圖書能緊跟技術和教學的發展,更加適合讀者學習和學校教學,我們結合最新技術和讀者的建議,對該系列圖書進行了改版(即第4 版)。本書便是該系列中的C++分冊。
本書有何特色
1.細緻體貼的講解
為了讓讀者更快地上手,本書特別設計了適合初學者的學習方式,用準確的語言總結概念用直觀的圖示演示過程用詳細的注釋解釋代碼用形象的比方幫助記憶。
1 知識點介紹 準確、清晰是其顯著特點,一般放在每一節開始位置,讓零基礎的讀者了解相關概念,順利入門。
2 範例 書中出現的完整實例,以章節順序編號,便於檢索和循序漸進地學習、實踐,放在每節知識點介紹之後。
3 代碼清單 與範例編號對應,層次清楚、語句簡潔、注釋豐富,體現了代碼優美的原則,有利於讀者養成良好的代碼編寫習慣。對於大段程式,均在每行代碼前設定編號便於學習。
4 運行結果 對範例給出運行結果和對應圖示,幫助讀者更直觀地理解範例代碼。
5 範例解析 將範例代碼中的關鍵代碼行逐一進行解釋,有助於讀者掌握相關概念和知識。
6 貼心的提示 為了便於讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定如下:
提示:通常是一些貼心的提醒,讓讀者加深印象或提供建議,或者解決問題的方法。
注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
警告:對操作不當或理解偏差將會造成的災難性後果做警示,以加深讀者印象。
經作者多年的培訓和授課證明,以上講解方式是最適合初學者學習的方式,讀者按照這種方式會非常輕鬆、順利地掌握本書知識。
2.實用超值的DVD 光碟
為了幫助讀者比較直觀地學習,本書附帶DVD 光碟,內容包括多媒體視頻、電子教案(PPT)和實例原始碼等。
多媒體視頻
本書配有長達12 小時教學視頻,講解關鍵知識點界面操作和書中的一些綜合練習題。作者親自配音、演示,手把手教會讀者使用。
電子教案(PPT)
本書可以作為高校相關課程的教材或課外輔導書,所以作者特別為本書製作了電子教案
(PPT),以方便老師教學使用。
職場面試法寶
本書附贈“職場面試法寶”,含常見的職場經典面試題及解答。
3.提供完善的技術支持
本書的技術支持論壇查閱本書,讀者可以在上面提問交流。另外,論壇上還有一些教程、視頻動畫和各種技術文章,可幫助讀者提高開發水平。
推薦的學習計畫表
本書作者在長期從事相關培訓或教學實踐過程中,歸納了最適合初學者的學習模式,並參考了多位專家的意見,為讀者總結了合理的學習時間分配方式。
本書適合哪些讀者閱讀
本書非常適合以下幾類人員閱讀:
從未接觸過C++編程,但對C++有興趣的自學人員;
各大中專院校的在校學生和相關授課老師;
了解一些C++,但還需要進一步學習的人員;
在某些需要使用C++編程的特殊領域的工作人員;
其他編程愛好者。