相關主題
商品描述
本書以C++ 14/17/20標準為指引,深入淺出地介紹了標準C++面向對象程序設計的相關知識,包括C++對C語言的擴展以及類、對象、友元、繼承、多態、虛函數、重載、I/O流類庫、文件、模板與STL、異常、多線程等內容。全書本著易於理解、實用性強的原則設計其內容和案例,並以一個規模較大的綜合性程序貫穿於C++面向對象編程的全過程,引領讀者理解和掌握面向對象程序設計的思想、方法和技術,以及運用C++設計自定義類進行軟件開發的方法。本書取材新穎,內容全面,通俗易懂,可作為高等院校電腦、電子信息類專業及其他理工類相關專業和信息管理與信息系統等專業的教材,也可作為C++語言自學者或程序設計人員的參考用書。
目錄大綱
目 錄
第1章 C++與面向對象程序設計 1
1.1 面向對象程序設計概述 2
1.1.1 面向過程程序設計 2
1.1.2 面向對象程序設計 3
1.1.3 面向對象程序設計語言的特徵 4
1.2 C++語言概述 6
1.2.1 C++語言簡史 7
1.2.2 C++的特點 8
1.2.3 C++程序的結構 8
1.2.4 標準C++程序設計 11
1.3 數據的輸入和輸出 13
1.3.1 數據類型 13
1.3.2 流的概念 15
1.3.3 cin和提取運算符>> 15
1.3.4 cout和插入運算符<< 17
1.3.5 輸出格式控制符 19
1.3.6 數制基數 21
1.3.7 string和字符串的輸入、輸出 22
1.3.8 數據輸入的典型問題 24
1.4 編程實作:Visual C++ 2022編程簡介 28
習題1 32
第2章 C++程序設計基礎 34
2.1 C++語言對C語言的類型擴展和類型定義 35
2.2 C++程序變量設計的基本思想 36
2.3 左值、右值和斷言 38
2.4 指針 39
2.4.1 指針概述 39
2.4.2 void*指針和獲取數組首、尾元素位置的指針 41
2.4.3 內存的分配和釋放 42
2.4.4 智能指針 44
2.5 引用 49
2.5.1 左值引用 49
2.5.2 右值引用、移動及其語義 52
2.6 const和constexpr常量 54
2.6.1 常量的定義 54
2.6.2 const、constexpr與指針 55
2.6.3 const與引用 56
2.6.4 頂層const和底層const 57
2.7 auto、decltype和decltype(auto)類型 58
2.8 C++新式for循環和數組 60
2.8.1 begin、end和基於範圍的for循環 60
2.8.2 vector和valarray 61
2.9 數據類型轉換 63
2.10 函數 66
2.10.1 函數原型 66
2.10.2 函數參數傳遞的方式 67
2.10.3 函數默認參數 71
2.10.4 函數返回值 72
2.10.5 函數重載 75
2.10.6 函數與const和constexpr 78
2.10.7 內聯函數 81
2.11 匿名函數 82
2.12 命名空間 88
2.13 變量 90
2.13.1 變量定義 90
2.13.2 作用域 90
2.13.3 變量的類型和生命期 92
2.13.4 變量初始化 93
2.13.5 局部變量與函數返回地址 97
2.14 預處理器 97
2.15 文件的輸入和輸出 100
2.15.1 文件操作的基本流程 100
2.15.2 輸入流、輸出流的泛化思想 101
2.16 編程實作:C++程序設計初步 102
習題2 104
第3章 類和對象 110
3.1 類的抽象和封裝 111
3.1.1 抽象 111
3.1.2 封裝 113
3.2 結構 115
3.2.1 C++對結構的擴展 116
3.2.2 類 118
3.3 數據成員 119
3.4 成員函數 120
3.4.1 成員函數定義方式和內聯函數 120
3.4.2 常量成員函數 122
3.4.3 成員函數重載和默認參數值 123
3.5 對象 123
3.6 構造函數設計 126
3.6.1 編譯器默認添加成員函數 127
3.6.2 構造函數和類內初始值 128
3.6.3 默認構造函數 130
3.6.4 重載構造函數 133
3.6.5 構造函數與初始化列表 135
3.6.6 委托構造函數 137
3.7 析構函數 138
3.7.1 析構函數的設計思想和定義 138
3.7.2 弱指針與析構函數 140
3.8 賦值運算符函數、復制構造函數和移動函數設計 142
3.8.1 賦值運算符函數 142
3.8.2 復制構造函數 146
3.8.3 移動函數 149
3.9 靜態成員 154
3.10 this指針 157
3.11 對象應用 161
3.11.1 成員訪問操作符 161
3.11.2 對象數組與對象指針 164
3.11.3 向函數傳遞對象 165
3.11.4 對象成員 166
3.12 類的作用域和對象的生命期 169
3.13 友元 172
3.14 編程實作:類的接口與實現的分離 173
3.14.1 頭文件 174
3.14.2 源文件 175
3.14.3 對類的應用 176
習題3 180
第4章 繼承 185
4.1 繼承的概念 186
4.2 protected與繼承 187
4.3 繼承方式 188
4.4 派生類對基類的擴展 191
4.4.1 成員函數的重定義和名字隱藏 191
4.4.2 基類成員訪問 193
4.4.3 using和隱藏函數重現 194
4.4.4 派生類修改基類成員的訪問權限 195
4.4.5 友元與繼承 196
4.4.6 靜態成員與繼承 197
4.4.7 繼承和類作用域 198
4.5 構造函數和析構函數 199
4.5.1 派生類構造函數的建立規則 200
4.5.2 派生類構造函數和析構函數的調用次序 205
4.5.3 派生類的賦值、復制和移動操作 207
4.6 基類與派生類對象的關系 208
4.6.1 派生類對象對基類對象的賦值和初始化 209
4.6.2 派生類對象與基類對象的類型轉換 211
4.7 多繼承 213
4.7.1 多繼承的概念和應用 213
4.7.2 多繼承方式下的成員二義性 215
4.7.3 多繼承的構造函數和析構函數 216
4.8 虛擬繼承 217
4.9 繼承和組合 222
4.10 編程實作:繼承編程應用 226
習題4 231
第5章 多態 237
5.1 多態概述 238
5.1.1 多態的概念 238
5.1.2 多態的意義 240
5.1.3 多態和綁定 241
5.2 虛函數 241
5.2.1 虛函數的意義 241
5.2.2 override和final 244
5.2.3 虛函數的特性 246
5.3 虛析構函數 251
5.4 純虛函數和抽象類 252
5.4.1 純虛函數和抽象類 252
5.4.2 抽象類的應用 254
5.5 運行時類型信息 262
5.5.1 dynamic_cast 263
5.5.2 typeid 266
5.6 編程實作:多態編程應用 268
習題5 269
第6章 運算符重載 274
6.1 運算符重載基礎 275
6.2 重載二元運算符 277
6.2.1 類與二元運算符重載 277
6.2.2 非類成員方式重載二元運算符的特殊用途 280
6.3 重載一元運算符 282
6.3.1 作為成員函數重載 282
6.3.2 作為友元函數重載 284
6.4 特殊運算符重載 285
6.4.1 重載++和-- 285
6.4.2 下標[ ]和賦值運算符= 287
6.4.3 類型轉換運算符 289
6.4.4 仿函數 292
6.5 輸入/輸出運算符重載 293
6.6 編程實作:運算符重載編程應用 295
習題6 300
第7章 模板和STL 303
7.1 模板的概念 304
7.2 函數模板和模板函數 305
7.2.1 函數模板的定義 305
7.2.2 函數模板的實例化 306
7.2.3 模板參數 307
7.3 類模板 311
7.3.1 類模板的概念 311
7.3.2 類模板的定義 311
7.3.3 類模板實例化 313
7.3.4 類模板的應用 315
7.4 模板設計中的獨特問題 316
7.4.1 模板參數類型推導 316
7.4.2 內聯與常量函數模板 320
7.4.3 默認模板實參 320
7.4.4 仿函數應用 321
7.4.5 成員模板 322
7.4.6 可變參數函數模板 323
7.4.7 元編程的基本概念 324
7.4.8 模板重載、特化、非模板函數及調用次序 327
7.5 STL程序設計 330
7.5.1 函數對象 330
7.5.2 順序容器 331
7.5.3 迭代器 339
7.5.4 pair和tuple容器 342
7.5.5 關聯式容器 345
7.5.6 算法 352
7.5.7 STL容器和算法處理自定義類的常見問題 355
7.6 編程實作:模板和STL編程應用 357
習題7 358
第8章 異常 362
8.1 異常處理概述 363
8.2 C++異常處理基礎 364
8.2.1 異常處理的結構 364
8.2.2 異常捕獲 365
8.3 異常和函數 367
8.4 異常處理的特殊情況 368
8.5 異常和類 373
8.5.1 構造函數和異常 373
8.5.2 異常類 375
8.5.3 派生異常類的處理 378
習題8 381
第9章 線程 383
9.1 程序、進程和線程 384
9.2 線程等待和線程ID獲取 388
9.2.1 線程等待 388
9.2.2 獲取線程ID 390
9.3 類和線程 391
9.4 線程同步 393
9.4.1 互斥鎖 393
9.4.2 讀寫鎖 396
9.4.3 信號量 397
9.4.4 條件變量 402
習題9 405
第10章 流和文件 410
10.1 C++ I/O流及流類庫 411
10.2 I/O流類的成員函數 412
10.2.1 類istream的常用成員函數 412
10.2.2 類ostream的常用成員函數 414
10.2.3 數據輸入、輸出的格式控制 415
10.3 文件操作 418
10.3.1 文件和流 418
10.3.2 二進制文件 420
10.3.3 隨機文件 423
習題10 425
參考文獻 428