目錄
第1篇 C++數據表達篇
第1章 C++入門 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章 變數和數據類型 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 浮點型 25
2.3.4 布爾型 26
2.4 類型轉換 27
2.4.1 隱式轉換 27
2.4.2 顯式轉換 28
2.5 小結 29
2.6 習題 29
第3章 運算符和表達式 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章 程式控制結構 50
4.1 順序結構 50
4.1.1 表達式語句 50
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 習題 70
第2篇 C++面向過程設計篇
第5章 函式 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章 編譯預處理 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.7 宏與函式的區別 103
6.3 檔案包含 105
6.3.1 #include命令 105
6.3.2 合理使用檔案包含 106
6.4 條件編譯 107
6.4.1 #ifdef形式 107
6.4.2 #ifndef形式 108
6.4.3 #if形式 108
6.5 其他命令 110
6.5.1 #error命令 110
6.5.2 #line命令 110
6.6 小結 111
6.7 習題 111
第7章 數組 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 初始化數組 119
7.3.2 通過賦值表達式賦值 120
7.3.3 通過輸入語句賦值 121
7.3.4 通過循環語句賦值 122
7.3.5 多維數組的賦值 123
7.4 字元串 124
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 排序 132
7.7 小結 135
7.8 習題 136
第8章 指針 139
8.1 指針概述 139
8.1.1 指針是什麼 139
8.1.2 定義指針 140
8.1.3 指針的初始化 140
8.2 指針的運算 142
8.2.1 取地址與取值運算 142
8.2.2 指針的算術運算 143
8.2.3 指針的關係運算 145
8.2.4 指針的賦值運算 146
8.2.5 void指針和const指針 146
8.3 指針與數組 148
8.3.1 訪問數組元素的方法 148
8.3.2 多維數組元素的訪問 150
8.3.3 數組指針與指針數組 151
8.4 指針與函式 152
8.4.1 指針作為函式參數 152
8.4.2 指針型函式 154
8.4.3 函式指針 155
8.5 指針與字元串 156
8.6 二級指針 157
8.7 小結 158
8.8 習題 159
第9章 構造數據類型 162
9.1 結構體 162
9.1.1 結構體概述 162
9.1.2 結構體類型說明 163
9.1.3 定義結構體類型變數 164
9.1.4 初始化結構體變數 165
9.1.5 引用結構體成員變數 167
9.1.6 結構體作為函式參數 169
9.2 共用體 170
9.2.1 共用體類型說明 170
9.2.2 定義共用體類型變數 171
9.2.3 引用共用體成員變數 171
9.3 枚舉 173
9.3.1 定義枚舉類型 173
9.3.2 定義枚舉類型變數 175
9.3.3 引用枚舉類型變數 176
9.4 類型重定義typedef 177
9.5 位域 179
9.5.1 定義位域變數 179
9.5.2 使用位域 180
9.6 小結 181
9.7 習題 182
第3篇 C++面向對象編程篇
第10章 類和對象 185
10.1 類 185
10.1.1 什麼是類 185
10.1.2 結構到類 186
10.1.3 類的聲明 188
10.1.4 類的訪問控制 189
10.1.5 類的定義 191
10.2 對象 193
10.2.1 對象概述 193
10.2.2 對象數組 194
10.3 構造函式 196
10.3.1 構造函式的概念 196
10.3.2 構造函式的聲明和定義 196
10.3.3 構造函式的調用 198
10.3.4 不帶參數的構造函式 199
10.3.5 帶有默認參數的構造函式 200
10.3.6 構造函式的重載 201
10.4 拷貝構造函式 202
10.4.1 定義拷貝構造函式 202
10.4.2 調用拷貝構造函式 203
10.4.3 默認拷貝構造函式 205
10.5 析構函式 206
10.6 友元 207
10.6.1 友元函式 207
10.6.2 友元成員 209
10.6.3 友元類 210
10.7 小結 212
10.8 習題 212
第11章 繼承 217
11.1 繼承與派生 217
11.1.1 繼承與派生概述 217
11.1.2 聲明派生類 218
11.2 訪問控制 218
11.2.1 公有繼承 219
11.2.2 私有派生 221
11.2.3 保護繼承 222
11.3 派生類的構造函式和析構函式 226
11.3.1 執行順序和構建原則 226
11.3.2 派生類的構造函式 226
11.3.3 派生類析構函式的構建 227
11.4 多重繼承 229
11.4.1 二義性問題 229
11.4.2 聲明多重繼承 231
11.4.3 多重繼承的構造函式和析構函式 233
11.5 虛基類 235
11.5.1 虛基類的引入 235
11.5.2 定義虛基類 236
11.5.3 虛基類的構造函式和初始化 238
11.6 小結 239
11.7 習題 239
第12章 多態 245
12.1 多態 245
12.1.1 什麼是多態 245
12.1.2 多態的作用 246
12.1.3 多態的引入 246
12.2 函式重載 248
12.3 虛函式 249
12.3.1 虛函式的引入 249
12.3.2 定義虛函式 251
12.3.3 使用虛函式 252
12.3.4 多重繼承和虛函式 253
12.3.5 虛函式的注意事項 255
12.4 抽象類 255
12.4.1 純虛函式 255
12.4.2 抽象類 257
12.5 小結 259
12.6 習題 259
第13章 運算符重載 263
13.1 運算符重載簡介 263
13.1.1 運算符重載的定義 263
13.1.2 運算符重載的特點 264
13.1.3 運算符重載的規則 265
13.2 運算符重載的形式 266
13.2.1 重載為類的成員函式 266
13.2.2 雙目運算符重載為成員函式 266
13.2.3 單目運算符重載為成員函式 267
13.2.4 運算符重載為類的友元函式 269
13.2.5 雙目運算符重載為友元函式 269
13.2.6 單目運算符重載為友元函式 270
13.2.7 成員運算符函式與友元運算符函式的比較 272
13.3 特殊運算符的重載 272
13.3.1 “++”和“--”的重載 272
13.3.2 賦值運算符“=”的重載 274
13.3.3 下標運算符“[ ]”的重載 276
13.4 類類型轉換 277
13.5 小結 279
13.6 習題 279
第14章 輸入/輸出流 283
14.1 輸入/輸出流的引入 283
14.1.1 printf與scanf的缺陷 283
14.1.2 輸入/輸出流簡介 284
14.1.3 輸入/輸出流類層次 285
14.2 標準輸入/輸出流 286
14.2.1 標準輸出流對象 286
14.2.2 標準輸入流對象 287
14.2.3 標準錯誤輸出流對象 288
14.3 輸入/輸出流成員函式 289
14.3.1 get()函式:輸出字元串 289
14.3.2 getline()函式:獲取字元串 291
14.4 輸入/輸出的格式控制 291
14.4.1 用ios類的成員函式進行格式控制 292
14.4.2 使用格式控制符進行格式控制 294
14.5 用戶自定義數據類型的輸入/輸出 296
14.5.1 重載輸出運算符“<<” 296
14.5.2 重載輸入運算符“>>” 298
14.6 小結 299
14.7 習題 299
第4篇 C++高級特性篇
第15章 檔案 303
15.1 檔案和流 303
15.1.1 檔案概述 303
15.1.2 檔案流類 304
15.2 檔案的打開與關閉 305
15.2.1 打開檔案 305
15.2.2 關閉檔案 307
15.3 檔案的順序讀寫 308
15.3.1 讀寫文本檔案 308
15.3.2 文本檔案套用示例 309
15.3.3 二進制檔案概述 311
15.3.4 讀寫二進制檔案 311
15.4 檔案的隨機讀寫 314
15.5 小結 316
15.6 習題 316
第16章 命名空間 319
16.1 命名空間 319
16.1.1 什麼是命名空間 319
16.1.2 定義命名空間 320
16.2 使用命名空間 322
16.2.1 使用作用域運算符引用成員 322
16.2.2 使用using指令 323
16.2.3 使用using聲明 324
16.2.4 using指令與using聲明的比較 325
16.3 類的作用域 325
16.3.1 靜態數據成員 326
16.3.2 靜態成員函式 327
16.4 作用域 328
16.4.1 局部作用域 328
16.4.2 全局作用域 330
16.4.3 作用域嵌套 331
16.5 this指針 332
16.6 小結 334
16.7 習題 334
第17章 引用與記憶體管理 337
17.1 引用 337
17.1.1 引用概述 337
17.1.2 引用的使用 338
17.2 引用的操作 339
17.2.1 引用作為函式參數 339
17.2.2 引用作為返回值 340
17.3 動態記憶體分配 341
17.3.1 申請動態記憶體 341
17.3.2 釋放空間 343
17.3.3 malloc和free庫函式 344
17.4 const引用 346
17.5 指針與引用的區別 347
17.6 小結 348
17.7 習題 349
第5篇 C++編程實踐篇
第18章 標準模板庫STL 351
18.1 標準模板庫 351
18.1.1 STL概述 351
18.1.2 STL的引入 351
18.1.3 STL的組成 352
18.2 算法 353
18.3 容器 355
18.3.1 什麼是容器 355
18.3.2 向量 355
18.3.3 列表 357
18.3.4 集合 359
18.3.5 雙端佇列 360
18.3.6 棧 361
18.3.7 映射和多重映射 363
18.4 疊代器 364
18.5 小結 365
18.6 習題 365
第19章 模板與C++標準庫 368
19.1 模板概述 368
19.1.1 模板簡介 368
19.1.2 模板的引入 369
19.2 函式模板 370
19.2.1 定義函式模板 370
19.2.2 生成模板函式 371
19.2.3 函式模板的異常處理 372
19.3 類模板 373
19.3.1 定義類模板 373
19.3.2 模板類 374
19.4 C++標準庫概述 376
19.5 字元串庫 377
19.5.1 讀寫字元串 377
19.5.2 字元串賦值 377
19.5.3 字元串比較 378
19.5.4 字元串長度和空字元串 379
19.6 小結 381
19.7 習題 381
第20章 異常處理 384
20.1 錯誤與異常 384
20.1.1 什麼是異常 384
20.1.2 異常處理的基本思想 384
20.2 異常處理的實現 386
20.2.1 使用try/catch捕獲異常 386
20.2.2 使用throw拋出異常 387
20.2.3 套用示例 388
20.3 類和結構的異常處理 389
20.3.1 異常處理中的構造和析構 390
20.3.2 處理結構類型的異常 391
20.4 異常處理機制 392
20.5 小結 394
20.6 習題 394
第6篇 實例篇
第21章 簡單學生成績管理系統開發實例 397
21.1 需求分析 397
21.2 總體設計 397
21.3 功能模組實現 398
21.3.1 成績錄入模組 399
21.3.2 成績統計模組 399
21.3.3 成績排名模組 400
21.3.4 成績查詢模組 402
21.3.5 輸出模組 403
21.4 系統集成 403
21.5 系統實現 405
21.5.1 結構和變數定義部分 406
21.5.2 功能函式定義部分 407
21.5.3 主函式部分 408
21.6 小結 410
前言
本書作者
本書主要由劉蕾編寫。其他參與編寫的人員有張燕、杜海梅、孟春燕、吳金艷、鮑凱、龐雁豪、楊銳麗、鮑潔、王小龍、李亞傑、張彥梅、劉媛媛、李亞偉、張昆,在此一併表示感謝。