本書系統(tǒng)講解了面向對象編程技術與方法的相關內容,包括類與對象的概念,抽象、封裝、繼承、多態(tài)等面向對象編程技術的基本特征。主要內容包括面向對象編程技術概述、C++編程基礎、函數、類與對象、運算符重載、繼承與派生、多態(tài)、模板、異常處理及C++標準庫,并在最后給出用面向對象方法開發(fā)學生信息管理系統(tǒng)的具體步驟和代碼。書中所有例程均在Visual Studio 2019集成開發(fā)環(huán)境下調試通過。 本書力求讓讀者能夠獲得最大收益,不僅能掌握面向對象編程的技術與方法,而且能學會用C++語言編寫程序,并能夠利用C++標準庫或者其他類庫高效開發(fā)應用軟件。 本書內容全面、語言簡潔、重點突出、實例豐富、實用性強,既適合作為高等院校計算機、電子信息相關專業(yè)的教材或培訓機構教材,也適合作為研究生教材及自學參考書。
趙清杰,博士,教授,博士生導師,北京市"智能信息技術”重點實驗室副主任。2003年畢業(yè)于清華大學計算機系,獲計算機應用技術專業(yè)博士學位,同年到北京理工大學計算機學院從事教學及科研工作,其中2008.09-2009.09在英國Essex大學計算機系客座研究,2017.09-2018.09在德國漢堡大學計算機系高訪。承擔包括國家自然科學基金、國家重點研發(fā)計劃等各種科研課題近20項,在國內外重要期刊和會議上發(fā)表論文100余篇,出版著作5本,獲準國家發(fā)明專利8項、軟件著作權登記6項。
第1章 面向對象編程技術概述 1
1.1 兩種編程方法舉例 1
1.1.1 面向過程編程方法 1
1.1.2 面向對象編程方法 3
1.2 面向對象編程的基本特征 5
1.2.1 抽象 5
1.2.2 封裝 5
1.2.3 繼承 6
1.2.4 多態(tài) 7
1.3 程序的編譯、連接與運行 8
1.4 C++標準庫簡介 10
1.5 小結 11
習題 1 11
第2章 C++編程基礎 12
2.1 C++的詞法規(guī)則 12
2.1.1 字符集 12
2.1.2 單詞 13
2.2 C++的數據類型 14
2.2.1 基本數據類型 15
2.2.2 常量與變量 16
2.2.3 自定義數據類型 25
2.2.4 擴展數據類型 29
2.2.5 類型轉換 37
2.2.6 typedef與typeid 39
2.3 表達式與語句 40
2.3.1 表達式 40
2.3.2 語句 44
2.4 預處理命令 49
2.4.1 宏定義命令 50
2.4.2 文件包含命令 50
2.4.3 條件編譯命令 50
2.5 名字空間 52
2.5.1 名字空間聲明 53
2.5.2 使用名字空間 53
2.5.3 標準名字空間std 55
2.6 小結 56
習題 2 56
第3章 函數 58
3.1 函數的定義與聲明 58
3.2 函數調用 59
3.2.1 如何調用函數 59
3.2.2 參數傳遞 60
3.2.3 函數的返回類型 64
3.2.4 嵌套調用與遞歸調用 66
3.2.5 如何調用庫函數 67
3.3 函數指針 67
3.4 static函數 69
3.5 inline函數 70
3.6 函數重載 71
3.7 帶默認形參值的函數 72
3.8 小結 73
習題 3 73
第4章 類與對象 75
4.1 類與對象的定義 75
4.1.1 類的定義 75
4.1.2 類對象 78
4.1.3 類的封裝性和信息隱藏 80
4.2 構造函數與析構函數 81
4.2.1 構造函數 82
4.2.2 析構函數 91
4.2.3 構造與析構的順序 92
4.3 賦值成員函數 95
4.4 靜態(tài)成員 98
4.4.1 靜態(tài)數據成員 98
4.4.2 靜態(tài)成員函數 99
4.5 常成員 100
4.5.1 常數據成員 100
4.5.2 常成員函數 101
4.5.3 mutable 102
4.6 指向成員的指針 103
4.6.1 成員指針的定義與使用 103
4.6.2 如何得到成員函數的地址 105
4.7 組合類 106
4.8 友元 108
4.8.1 友元函數 108
4.8.2 友元類 112
4.9 小結 113
習題 4 114
第5章 運算符重載 115
5.1 運算符重載的概念 115
5.2 運算符重載的規(guī)則 116
5.3 運算符重載的兩種形式 116
5.3.1 重載為類的成員函數 116
5.3.2 重載為類的友元函數 118
5.3.3 兩種重載方式討論 119
5.4 特殊運算符重載舉例 120
5.4.1 類型轉換運算符 120
5.4.2 復合賦值運算符 121
5.4.3 自增和自減運算符 122
5.4.4 流提取運算符和流插入運算符 124
5.5 函數對象 125
5.6 小結 128
習題 5 128
第6章 繼承與派生 129
6.1 基類與派生類 129
6.2 對基類成員的訪問控制 130
6.2.1 公有繼承 130
6.2.2 私有繼承 134
6.2.3 保護繼承 135
6.3 派生類的構造函數與析構函數 135
6.3.1 構造函數 135
6.3.2 析構函數 137
6.4 組合與繼承的選擇 139
6.5 多繼承中的歧義 140
6.6 虛基類 141
6.7 小結 144
習題 6 144
第7章 多態(tài) 146
7.1 多態(tài)性概述 146
7.2 虛函數 147
7.2.1 虛函數的聲明與應用 147
7.2.2 虛析構函數 150
7.3 如何實現動態(tài)綁定 152
7.4 純虛函數與抽象類 155
7.5 小結 160
習題 7 160
第8章 模板 161
8.1 函數模板 161
8.1.1 函數模板的定義與使用 161
8.1.2 函數模板重載 164
8.1.3 函數模板專門化 165
8.1.4 使用標準庫中的函數模板 166
8.2 類模板 167
8.2.1 類模板的定義與使用 167
8.2.2 類模板專門化 170
8.2.3 作為函數的參數及返回類型 172
8.2.4 使用標準庫中的類模板 174
8.2.5 類模板的繼承與派生 175
8.3 小結 178
習題 8 179
第9章 異常處理 180
9.1 異常處理概述 180
9.2 異常處理的實現 180
9.3 帶異常聲明的函數 184
9.4 成員函數拋出異常 185
9.4.1 一般成員函數拋出異常 185
9.4.2 構造函數拋出異常 186
9.4.3 析構函數拋出異常 188
9.5 標準庫中的異常類型 189
9.6 小結 192
習題 9 192
第10章 C++標準庫 193
10.1 標準庫組織 193
10.2 容器 195
10.2.1 容器的成員 196
10.2.2 順序容器 198
10.2.3 順序容器適配器 200
10.2.4 關聯容器 202
10.2.5 近容器 205
10.3 string 205
10.4 泛型算法 207
10.5 迭代器 210
10.5.1 迭代器的分類 211
10.5.2 使用迭代器 211
10.6 函數對象 215
10.7 流類 220
10.7.1 標準流 221
10.7.2 文件流 222
10.7.3 串流 223
10.7.4 重載提取運算符和插入運算符 224
10.7.5 輸入/輸出成員函數 225
10.7.6 輸入/輸出格式控制 228
10.8 數值計算 231
10.8.1 數學函數 231
10.8.2 向量計算 232
10.8.3 復數計算 234
10.8.4 泛型數值算法 235
10.8.5 隨機數產生 236
10.9 小結 239
第11章 用面向對象方法開發(fā)學生信息管理系統(tǒng) 240
11.1 MFC簡介 240
11.2 學生信息管理系統(tǒng) 240
11.2.1 建立基于對話框的應用程序框架 241
11.2.2 設計登錄界面 243
11.2.3 設計User類 244
11.2.4 實現用戶登錄功能 246
11.2.5 設計學生信息管理系統(tǒng)主界面 247
11.2.6 實現學生管理功能 251
11.3 小結 258
附錄 ASCII碼表 259
參考文獻 260