C++ 程序設計 — 現代方法

白忠建

  • 出版商: 人民郵電
  • 出版日期: 2019-12-01
  • 售價: $359
  • 貴賓價: 9.5$341
  • 語言: 簡體中文
  • ISBN: 7115513732
  • ISBN-13: 9787115513731
  • 相關分類: C++ 程式語言

立即出貨

  • C++ 程序設計 — 現代方法-preview-1
  • C++ 程序設計 — 現代方法-preview-2
C++ 程序設計 — 現代方法-preview-1

買這商品的人也買了...

相關主題

商品描述

本書以C++ 1y標準為基準,詳細介紹了對象和麵向對象技術的概念,並圍繞案例的求解,深入淺出地介紹了面向對象技術的4個核心思想(數據封裝、繼承、多態和泛型編程)在C++中的概念、實現機制和語法、編程方法等,其中包括類和對象、運算符重載、繼承和派生、虛函數和多態性、模板和泛型編程、流庫、多繼承、名字空間和異常處理,使讀者能夠循序漸進地掌握C++的語法以及面向對象程序設計的方法。

作者簡介

白忠建博士,碩士生導師,電子科技大學軟件與信息工程學院副教授,長期從事軟件工程、程序設計方面的教學與科研工作。先後擔任國家軟件人才國際培訓(成都)基地常務副主任、電子科技大學成都學院計算機系主任兼系黨總支書記等職務。

目錄大綱

第1章引論1
1.1 C++程序概貌1
1.1.1編寫第一個C++程序2
1.1.2程序釋義3
1.2面向對象的基本概念5
1.2.1對象5
1.2.2面向對象方法的核心概念8
1.2.3面向對象分析、設計和程序設計8


第2章C++:一個更好的C 10
2.1基礎類型10
2.1.1增強的字面常量10
2.1.2 bool類型12
2.1.3強類型枚舉12
2.2地址類型14
2.2.1指針類型14
2.2.2引用類型16
2.3類型自動推導19
2.3.1 decltype關鍵字19
2.3.2 auto關鍵字20
2.4運算符和表達式20
2.4.1 C++特有的運算符20
2.4.2 lambda表達式23
2.5控制結構和語句25
2.6異常處理及語句26
2.6.1異常以及異常拋出26
2.6.2 try…catch語句26
2.7函數30
2.7.1函數的類型30
2.7.2函數的參數30
2.7.3函數的返回值33
2.7.4函數重載37
2.7.5回調函數38
2.8複雜類型聲明的簡化40
2.9名字空間41
2.9.1名字空間的定義42
2.9.2 using聲明和using指令42
2.9.3嵌套的名字空間43


第3章類:面向對象的基石44
3.1案例—鍊錶的實現44
3.1.1案例及其實現44
3.1.2案例問題分析49
3.2類49
3.2.1定義類類型和類對象49
3.2.2訪問控制和數據封裝56
3.2.3類的靜態成員60
3.2.4 struct和union 62
3.2.5聚集與組合62
3.3類對象的構造、初始化和析構63
3.3.1類的構造函數64
3.3.2構造函數重載67
3.3.3統一初始化69
3.3.4析構函數70
3.3.5默認和被刪除的成員函數71
3.4案例的完整解決方案72
3.5面向對象方法的應用74
3.5.1面向對象分析75
3.5.2面向對象設計76
3.5.3編碼實現77


第4章類的高級特性80
4.1案例—鍊錶類的複制問題80
4.1.1案例及其實現80
4.1.2案例問題分析84
4.2複製控制85
4.2.1複製85
4.2.2賦值86
4.2.3淺複製和深複製87
4.2.4轉移對象和轉移語義90
4.2.5禁止複制94
4.3指向類成員的指針95
4.4友元96
4.4.1友元函數和友元類96
4.4.2友元關係的特性98
4.5類的const成員和mutable成員99
4.5.1類的const成員99
4.5.2類的mutable成員100
4.6類中的類型名100
4.6.1類中的類類型100
4.6.2類中的枚舉類型101
4.6.3類中的typedef和using 102
4.6.4 typename關鍵字102
4.7案例的完整解決方案102


第5章運算符重載106
5.1案例分析— complex類及其常規運算106
5.1.1案例及其實現106
5.1.2案例問題分析107
5.2運算符函數重載108
5.2.1重載運算符函數的考慮因素108
5.2.2運算符函數重載的一般性規則112
5.3常用運算符的重載114
5.3.1重載賦值運算符114
5.3.2重載算術運算符115
5.3.3重載關係運算符119
5.3.4重載流式輸入運算符>>和輸出
5.4類型轉換121
5.4.1標量類型向類類型轉換121
5.4.2類類型向標量類型轉換122
5.4.3類類型向類類型轉換123
5.5重載特殊運算符124
5.5.1下標運算符[] 125
5.5.2指針運算符*和成員選擇運算符> 129
5.5.3函數調用運算符() 132


第6章繼承135
6.1案例—四邊形家族的類描述135
6.1.1案例及其實現135
6.1.2案例問題分析137
6.2繼承和派生139
6.2.1定義基類和派生類139
6.2.2繼承的實現機制141
6.2.3基類子對象的初始化142
6.2.4基類成員的繼承144
6.2.5重新定義基類成員147
6.3賦值兼容原則148
6.3.1派生類和基類對象間的賦值148
6.3.2引用作用於派生類和基類對象148
6.3.3指針作用於派生類和基類對象149
6.4多繼承150
6.4.1多繼承的語法150
6.4.2虛繼承和虛基類151
6.4.3多繼承面臨的其他問題152
6.5繼承的前提:正確的分類153
6.5.1案例—基於角色的分類154
6.5.2案例存在的問題155
6.5.3案例的改進方案156


第7章多態159
7.1案例分析—賦值兼容原則的進一步應用159
7.1.1案例及其實現159
7.1.2案例問題分析160
7.2多態的概念161
7.2.1靜態多態性161
7.2.2動態多態性162
7.3虛函數:實現多態的關鍵162
7.3.1虛函數的聲明和覆蓋162
7.3.2虛函數的實現原理167
7.3.3虛析構函數169
7.4純虛函數和抽像類170
7.4.1純虛函數170
7.4.2抽像類171


第8章模板174
8.1案例分析—類型帶來的困擾174
8.1.1案例的設計與實現174
8.1.2案例問題分析178
8.2變量模板179
8.2.1定義和使用變量模板179
8.2.2變量模板的特化180
8.3函數模板181
8.3.1定義和使用函數模板181
8.3.2函數模板的重載和特化183
8.3.3完美轉發184
8.3.4折疊表達式185
8.4類模板187
8.4.1定義和使用類模板188
8.4.2類模板的特化191
8.4.3類模板的友元191
8.4. 4類模板的繼承和派生192
8.4.5類模板的變長模板參數192
8.4.6類模板性能的改進194
8.5模板的別名196
8.6 traits技術198
8.6.1特性萃取198
8.6.2類型萃取200
8.6 .3隨之而來的問題202
8.7模板元編程初探204
8.7.1模板遞歸204
8.7.2奇異遞歸模板模式205


第9章容器、迭代器和泛型算法207
9.1案例分析—鍊錶類的遍歷207
9.1.1案例的設計與實現208
9.1.2案例問題分析209
9.2容器的迭代器210
9.2.1迭代器的結構設計210
9.2.2迭代器的實現211
9.3泛型算法217
9.3.1只用到迭代器的泛型算法217
9.3. 2帶更多參數的泛型算法218
9.3.3只讀算法和寫算法220
9.3.4泛型算法返回值類型的考慮221
9.3.5 iterator traits 222
9.4 C++標準模板庫STL 224
9.4.1 C++的標準容器類224
9.4.2 C++的標準泛型算法和可調用對象224
9.4.3 C++的標準iterator庫225


第10章多線程226
10.1案例分析—順序執行的局限226
10.1.1案例的設計與實現226
10.1.2案例問題分析226
10.2關鍵概念227
10.2.1異步227
10.2.2進程和線程227
10.2.3共享和互斥228
10.2.4鎖和死鎖228
10.3 C++的多線程庫229
10.3.1頭文件229
10.3.2頭文件232
10.3.3頭文件234
10.3.4頭文件236
10.4多線程編程示例239
10.4.1系統簡要分析239
10.4.2系統設計240
10.4.3系統實現241


第11章面向對象設計的原則244
11.1單一職責原則244
11.2開閉原則247
11.3聚集與組合復用原則248
11.4里氏替換原則248
11.5依賴倒置原則249
11.6接口隔離原則251
11.7最少知識原則252


第12章C++程序設計案例257
12.1案例描述257
12.2系統分析258
12.2.1 MVC設計模式簡介258
12.2.2系統的用例模型259
12.3系統設計259
12.3.1系統體系結構設計259
12.3.2對象設計260
12.3.3用戶界面設計263
12.4系統實現263

附錄A C++關鍵字274
附錄B常用運算符的優先級和結合性275
附錄C使用不同的C++編譯器276
C.1使用GNU GCC for Linux 276
C.2使用MinGW 277
C.3使用Visual Studio 2017(VS 2017) 277
C.4使用Clang 278
參考文獻280