內容簡介
本書分三部分,共16章。第一部分對C++語言的基本機制,即對C++語言中用於支持面向過程與面向模組化程式設計的語言機制進行了較為準確與全面的介紹;第二部分重點介紹了C++支持面向對象與類屬程式設計的各種語言機制,同時,在該部分對C++ 的異常處理機制進行了較為詳盡的介紹;第三部分對C++標準模板庫STL進行了簡要闡述,由於程式一般都要進行字元串與輸入/輸出處理,因此,在該部分重點對標準類庫中的string類和C++的I/O類進行了較具體的介紹。
本書針對計算機專業的本科生
編寫。書中注有星號的章節為C++ 中較深入的一些問題,在教學中可視教學時數與教學對象進行適當取捨。本書除作為本科生C++ 程式設計的教材之外,還可供計算機或電子類相關專業的研究生或工程技術人員參考學習。
目錄
第一部分 C++語言的基本機制
第1章 緒論 2
1.1 C++語言的發展歷史及特點 2
1.1.1 C++語言的發展歷史 2
1.1.2 C++語言的特點 3
1.2 學習C++語言的注意事項 3
1.2.1 如何學習C++ 3
1.2.2 如何使用本教材 4
1.3 C++ 語言中一些重要的程式設計理念 5
小結 7
練習題 7
第2章 C++ 語言概述 8
2.1 C++語言及程式設計范型 8
2.1.1 C++語言的概念 8
2.1.2 程式設計范型 9
2.1.3 第一個C++程式及C++程式結構 9
2.2 過程程式設計范型 10
2.2.1 過程程式設計范型介紹 10
2.2.2 變數和算術運算符 11
2.2.3 條件判斷與循環 12
2.2.4 指針與數組 12
2.3 模組化程式設計范型 13
2.4 數據抽象 14
2.5 面向對象程式設計范型 17
2.6 類屬/通用程式設計范型 19
小結 21
練習題 21
第3章 類型與聲明 22
3.1 類 型 22
3.2 C++中的基本數據類型 24
3.2.1 布爾類型 24
3.2.2 字元類型 25
3.2.3 整數類型 26
3.2.4 浮點類型 27
3.2.5 C++數據類型存儲量的大小 29
3.3 void類型 30
3.4 枚舉類型 30
3.5 類型的聲明與定義 32
3.5.1 聲明的語法規則 33
3.5.2 C++中的標識符 34
3.5.3 標識符的作用域 35
3.5.4 typedef 35
3.6 類型轉換 36
小結 37
練習題 38
第4章 運算符與語句 39
4.1 C++運算符概述 39
4.1.1 算術運算符和自增、自減運算符 40
4.1.2 關係和邏輯運算符 42
4.1.3 位運算符 43
4.1.4 記憶體申請與釋放運算符new和delete 46
4.1.5 賦值運算符 47
4.1.6 類型轉換運算符 47
4.1.7 C++運算符概覽及其優先權次序 49
4.2 C++語句 50
4.2.1 表達式語句和空語句 51
4.2.2 注釋語句及意義 51
4.2.3 複合語句 52
4.2.4 選擇判斷語句 52
4.2.5 循環語句 57
4.2.6 跳轉語句 62
小結 65
練習題 66
第5章 指針、數組和結構 67
5.1 指針 67
5.1.1 指針與指針變數 67
5.1.2 為什麼要使用指針變數 68
5.1.3 指針變數的聲明與定義 69
5.1.4 指針變數的操作 69
5.1.5 常量零(0) 71
5.2 數組 71
5.2.1 數組的定義與初始化 71
5.2.2 字元串字面值 73
5.3 指向數組的指針 74
5.3.1 指向一維數組的指針 74
5.3.2 指向多維數組的指針 75
5.3.3 取數組元素及數組的遍歷 76
5.4 指向函式的指針 80
5.5 指向void*的指針 81
5.6 常量 82
5.7 引用 85
5.8 結構 88
小結 94
練習題 95
第6章 函式 96
6.1 函式的聲明 98
6.1.1 函式接口/原型聲明 98
6.1.2 函式的定義 98
6.2 函式的參數傳遞 99
6.3 函式的返回值 101
6.4 函式名的過載/重載 102
6.4.1 函式名過載/重載的基本概念 102
6.4.2 重載函式的匹配規則 102
6.4.3 重載函式與函式的返回類型 105
6.4.4 重載與作用域 105
6.5 預設的函式參數值 106
6.6 遞歸 107
6.6.1 遞歸的基本概念 107
6.6.2 遞歸的定義及遞歸函式的編寫模式 108
6.7 參數數目可變的函式 110
6.8 函式指針 114
6.9 綜合示例 115
小結 128
練習題 128
第7章 名字空間與異常處理 129
7.1 模組與接口的基本概念 129
7.2 名字空間 131
7.2.1 名字空間的基本概念 131
7.2.2 名字空間中的名字解析 132
7.2.3 模組的多重接口 137
7.3 異常處理 138
7.4 綜合示例 141
小結 146
練習題 147
第8章 源檔案和程式 148
8.1 分別編譯 149
8.2 連結 149
8.2.1 連結與一致性的基本概念 149
8.2.2 頭檔案 151
8.2.3 #include指令 152
8.2.4 用戶頭檔案內容的設計 152
8.3 頭檔案的有效使用 154
8.4 命令行參數 156
8.5 程式 158
8.5.1 程式的執行 158
8.5.2 程式的終止 159
小結 159
練習題 160
第二部分 C++的抽象機制
第9章 類與對象 162
9.1 類的基本概念 162
9.2 類中成員 163
9.2.1 類中的成員 163
9.2.2 類的訪問控制 165
9.2.3 類的構造函式 168
9.2.4 類的靜態成員 170
9.2.5 對象的拷貝 173
9.2.6 常量(Const或稱唯讀)成員函式 175
9.2.7 對象的自身引用——this 176
9.3 定義有效、高質量的類 178
9.4 對象 180
9.4.1 對象是什麼 180
9.4.2 C++中對象的類別 182
9.4.3 對象的析構——析構函式 183
9.4.4 默認構造函式 184
9.4.5 幾種主要類別對象的構造與析構 184
9.4.6 對象的構造與析構次序 187
9.5 綜合示例 189
小結 195
練習題 196
第10章 操作符重載 198
10.1 概述 198
10.2 操作符重載 199
10.2.1 二元操作符的重載 200
10.2.2 一元操作符的重載 201
10.3 類型轉換操作符 202
10.3.1 類型轉換函式 202
10.3.2 歧義性(二義性)問題 204
10.4 友員 204
10.5 大型對象 206
10.6 類中應具有的基本操作 207
10.7 幾種特殊操作符的重載 211
10.7.1 下標運算符的重載 211
10.7.2 函式調用操作符的重載 212
10.7.3 指針/指向操作符的重載 214
10.7.4 自增、自減操作符的重載 216
10.7.5 流輸入與流輸出操作符的重載 217
10.8 綜合示例 219
小結 237
練習題 238
第11章 繼承與多態 239
11.1 概述 239
11.2 子類/派生類 240
11.2.1 子類/派生類與繼承的基本概念 240
11.2.2 子類對象的存儲結構 242
11.2.3 子類中的成員 242
11.2.4 子類的構造與析構函式 243
11.2.5 子類對象拷貝 246
11.2.6 public、protected和private繼承 247
11.3 虛函式與多態性 253
11.3.1 類型域 253
11.3.2 虛擬函式 255
11.3.3 抽象基類與實例類 257
11.3.4 多態 259
11.3.5 虛擬的析構函式 261
*11.4 運行時的類型識別 263
11.4.1 dynamic_cast運算符 263
11.4.2 type_id運算符 266
*11.5 指向類成員的指針 266
11.5.1 指向類成員的指針 266
11.5.2 指向類的成員函式指針的套用場合 268
11.6 多重繼承 270
11.7 綜合示例 273
小結 279
練習題 280
第12章 模板 283
12.1 概述 283
12.2 類模板 285
12.2.1 類模板的定義 285
12.2.2 類模板參數及其限制 288
12.3 函式模板 289
12.3.1 函式模板的定義 289
12.3.2 函式模板的重載 290
12.3.3 函式調用的匹配原則 292
12.3.4 編寫函式模板時的注意事項 292
12.4 模板與繼承 297
12.5 綜合示例 299
小結 313
練習題 313
第13章 異常處理 314
13.1 概述 314
13.2 C++異常處理結構try、throw 和catch 315
13.2.1 拋出異常 315
13.2.2 重新拋出異常 316
13.2.3 捕獲所有的異常 317
13.3 異常類層次 317
*13.4 捕獲new操作所產生的異常 318
*13.5 C++ 標準庫異常層次 321
小結 321
練習題 322
第三部分 C++標準模板庫STL簡介
第14章 string類 324
14.1 string概述 324
14.2 string類的構造函式與析構函式 324
14.3 string類重載的操作符 325
14.4 string類的成員函式 328
14.5 string的基本操作 329
14.5.1 元素訪問 329
14.5.2 賦值 330
14.5.3 從string轉換到C風格的字元串 331
14.5.4 字元串的比較 331
14.5.5 附加與插入 333
14.5.6 查找子串 334
14.5.7 替換 335
14.5.8 求子串 336
14.5.9 string對象的大小和容量 336
14.5.10 輸入輸出 336
14.6 C風格的字元串 337
14.6.1 C字元串操作函式 337
14.6.2 將數值字元串轉換到數值的函式 338
14.6.3 字元分類 338
14.7 疊代器 339
14.8 字元串流處理 340
小結 340
練習題 340
第15章 C++ 輸入/輸出系統基礎 342
15.1 C++ 中的流概述 342
15.1.1 C++的輸入/輸出流類庫中的頭檔案 343
15.1.2 輸入/輸出流類和對象 343
15.2 輸出流 344
15.3 輸入流 345
15.3.1 流讀取運算符 345
15.3.2 用於輸入的一些成員函式 346
15.4 成員函式read和write的無格式 輸入/輸出 347
15.5 流操縱運算元 347
15.5.1 設定整數流的基數 348
15.5.2 設定浮點數精度 348
15.5.3 設定輸出域寬 350
小結 351
練習題 352
第16章 標準模板庫STL簡介 353
16.1 STL概述 353
16.1.1 容器 353
16.1.2 算法 353
16.1.3 疊代器 354
16.1.4 其它STL元素 354
16.2 容器類 355
16.3 STL類的一般操作原理 356
16.4 vector容器 357
16.4.1 通過疊代器訪問vector矢量中的元素 360
16.4.2 vector的其它成員函式 361
16.4.3 在vector中存儲自定義類型的對象 363
16.5 list容器 364
16.6 deque雙向佇列 369
16.7 關聯容器 369
16.7.1 map關聯容器類 369
16.7.2 set和multiset關聯容器類 372
16.8 容器適配器 373
16.8.1 stack適配器 373
16.8.2 queue適配器 375
16.8.3 priority_queue適配器 376
16.9 算法 376
16.9.1 fill、fill_n、generate與generate_n算法 378
16.9.2 equal、mismatch和lexicographica_compare算法 380
16.9.3 remove、remove_if、remove_copy和remove_copy_if算法 382
16.9.4 replace、replace_if、replace_copy和replace_copy_if算法 384
16.9.5 一些常用的數學算法 386
16.9.6 基本查找與排序算法 388
16.9.7 swap、iter_swap和swap_ranges算法 390
16.9.8 copy_backward、mergeunique和reverse算法 392
16.9.9 inplace_merge、unique_copy和reverse_copy算法 393
16.9.10 集合操作 394
16.9.11 lower_bound、upper_bound和equal_range算法 396
16.9.12 堆排序 398
16.9.13 min和max算法 400
16.10 函式對象 401
16.10.1 一元函式對象與二元函式對象 401
16.10.2 STL內置的函式對象 401
16.10.3 綁定器 404
參考文獻 406