內容介紹
翁惠玉編著的《C++程式設計思想與方法(第2版)》以C++為語言環境,重點講授程式設計的思想和方法,涉及過程化程式設計和面向對象程式設計,內容包括數據類型、控制結構、數組、指針、數據封裝、過程封裝、運算符的重載、繼承、多態性和異常處理等。第2版秉承以程式設計方法為主、程式設計語言為輔的思想,採用以問題求解引出知識點的方法,強調編程思想和知識的套用,增加了更多的習題和實例,多章都增加了“編程規範與常見錯誤”小節。結構更加合理,內容更加通俗易懂。《C++程式設計思想與方法(第2版)》旨在使讀者通過學習,並經過一定的訓練和實踐,能夠掌握程式設計的方法,並具備良好的程式設計風格。本書可作為各大專院校計算機專業程式設計課程的教材,也可供從事計算機軟體開發的科研人員作為參考資料。
作者介紹
惠 玉上海人,上海交通大學博士,現為上海交通大學計算機系副教授,主要從事計算機網路、資料庫和信息系統的研究,並長期擔任ACM班計算機科學導論、程式設計 和數據結構課程的主講教師,其中程式設計課程於2004年被評為上海市精品課程。翁老師科研成果頗豐,多次獲得上海市科技進步獎,並多次獲得上海交通大學 的優秀教學獎,編寫了多本教材,如《數據結構:思想與實現》和《數據結構:題解與拓展》等,還翻譯了多本國外的教材。作品目錄
第1 章緒論11.1計算機硬體1
1.2計算機軟體2
1.3程式設計3
1.3.1算法設計3
1.3.2編碼4
1.3.3程式的編譯和調試5
小結6
習題6
第2 章通過例子學習8
2.1第一個程式:輸出Hello world 8
2.1.1注釋8
2.1.2預編譯9
2.1.3主程式10
2.1.4名字空間11
2.2第二個程式:計算圓的面積和周長11
2.3數據類型14
2.3.1整型14
2.3.2實型16
2.3.3字元型17
2.3.4布爾型21
2.3.5枚舉類型21
2.3.6用typedef 重新命名類型名23
2.3.7變數賦初值23
2.3.8用sizeof 了解占用的記憶體量24
2.4符號常量24
2.5算術運算25
2.5.1主要的算術運算符25
2.5.2各種類型的數值間的混合運算25
2.5.3整數除法和取模運算符 26
2.5.4優先權與結合性26
2.5.5數學函式館 26
2.6賦值運算27
2.6.1賦值運算符 27
2.6.2賦值時的自動類型轉換 28
2.6.3賦值的嵌套 28
2.6.4多重賦值 28
2.6.5複合賦值運算 29
2.7自增和自減運算符 30
2.8強制類型轉換 31
2.9數據的輸入/輸出 32
2.9.1數據的輸入 32
2.9.2數據的輸出 33
2.10編程規範及常見錯誤 33
小結 34
習題 34
第3 章邏輯思維——分支程式設計 38
3.1關係運算 38
3.1.1關係運算符 38
3.1.2關係表達式 39
3.2邏輯運算 39
3.3if 語句 42
3.3.1if 語句的形式 42
3.3.2if 語句的嵌套 43
3.3.3if 語句的套用 43
3.3.4條件表達式 46
3.4switch 語句及其套用 46
3.5編程規範及常見錯誤 52
小結52
習題53
第4 章重複控制——循環程式設計55
4.1for 循環55
4.1.1重複n 次操作55
4.1.2for 語句的進一步討論58
4.1.3for 循環的嵌套58
4.2while 循環59
4.3do-while 循環62
4.4循環的中途退出63
4.5枚舉法64
4.6貪婪法67
4.7編程規範和常見錯誤68
小結69
習題69
第5 章批量數據處理——數組73
5.1一維數組73
5.1.1一維數組的定義73
5.1.2數組元素的引用73
5.1.3一維數組的初始化74
5.1.4一維數組在記憶體中的表示74
5.1.5一維數組的套用75
5.2查找和排序77
5.2.1查找77
5.2.2排序81
5.3二維數組84
5.3.1二維數組的定義84
5.3.2二維數組的初始化84
5.3.3二維數組在記憶體中的表示85
5.3.4二維數組的套用85
5.4字元串88
5.4.1字元串的存儲及初始化88
5.4.2字元串的輸入/輸出89
5.4.3字元串處理函式90
5.4.4字元串的套用90
5.5編程規範及常見錯誤91
小結92
習題92
第6 章過程封裝——函式95
6.1函式的定義96
6.1.1return 語句96
6.1.2函式示例96
6.2函式的使用98
6.2.1函式原型的聲明98
6.2.2函式的調用100
6.2.3將函式與主程式放在一起101
6.2.4函式調用過程102
6.3數組作為函式的參數104
6.4帶默認值的函式107
6.5內聯函式108
6.6重載函式109
6.7函式模板111
6.8變數的作用域112
6.9變數的存儲類別114
6.9.1自動變數114
6.9.2靜態變數114
6.9.3暫存器變數116
6.9.4外部變數116
6.10遞歸函式118
6.10.1遞歸函式的基本概念118
6.10.2遞歸函式的套用121
6.11基於遞歸的算法126
6.11.1回溯法126
6.11.2分治法129
6.11.3動態規劃133
6.12編程規範及常見錯誤135
小結136
習題137
第7 章間接訪問——指針140
7.1指針的概念140
7.1.1指針變數的定義141
7.1.2指針的基本操作141
7.2指針運算與數組145
7.2.1指針運算146
7.2.2用指針訪問數組147
7.3指針與動態記憶體分配148
7.3.1動態變數的創建149
7.3.2動態變數的回收150
7.3.3記憶體泄漏150
7.3.4查找new 操作的失誤150
7.4字元串再討論151
7.5指針與函式152
7.5.1指針作為形式參數152
7.5.2數組名作為形式參數的再討論155
7.5.3字元串作為函式的參數157
7.5.4返回指針的函式157
7.5.5引用與引用傳遞158
7.5.6返回引用的函式160
7.6指針數組與多級指針161
7.6.1指針數組161
7.6.2main 函式的參數162
7.6.3多級指針164
7.7多維數組和指向數組的指針165
7.8指向函式的指針167
7.8.1作為函式的參數168
7.8.2用於選單選擇169
7.9編程規範與常見錯誤170
小結171
習題172
第8 章數據封裝——結構體174
8.1記錄的概念174
8.2C++語言中記錄的使用175
8.2.1結構體類型的定義175
8.2.2結構體類型的變數的定義176
8.2.3結構體類型的變數的使用177
8.2.4結構體數組178
8.3結構體作為函式的參數180
8.4鍊表182
8.4.1鍊表的概念182
8.4.2單鍊表的存儲183
8.4.3單鍊表的操作184
8.5編程規範及常見錯誤189
小結189
習題189
第9 章模組化開發192
9.1自頂向下分解192
9.1.1頂層分解 193
9.1.2prn_instruction 函式的實現193
9.1.3play 函式的實現194
9.1.4get_call_from_user 函式的實現 195
9.2模組劃分195
9.3設計自己的庫 201
9.4編程規範及常見錯誤206
小結207
習題207
第10 章創建工具——類的定義與使用 209
10.1從過程化到面向對象 209
10.1.1抽象的過程209
10.1.2面向對象程式設計的特點 210
10.1.3庫和類211
10.2類的定義217
10.3對象的使用221
10.3.1對象的定義221
10.3.2對象的操作222
10.3.3this 指針223
10.3.4對象的構造與析構 224
10.4常量對象與常量成員函式233
10.5常量數據成員 234
10.6靜態數據成員與靜態成員函式 234
10.6.1靜態數據成員的定義 235
10.6.2靜態成員函式 235
10.6.3靜態常量成員 238
10.7友元 239
10.8編程規範及常見錯誤 241
小結 241
習題 241
第11 章運算符重載245
11.1什麼是運算符重載245
11.2運算符重載的方法246
11.3幾個特殊運算符的重載249
11.3.1賦值運算符的重載249
11.3.2下標運算符的重載251
11.3.3函式調用運算符重載252
11.3.4++和--運算符的重載253
11.3.5輸入/輸出運算符的重載254
11.3.6重載函式的原型設計考慮256
11.4自定義類型轉換函式257
11.4.1內置類型到類類型的轉換258
11.4.2類類型到其他類型的轉換258
11.5運算符重載的套用259
11.5.1完整的Rational 類的定義和使用259
11.5.2完整的DoubleArray類的定義和使用262
11.6編程規範與常見錯誤265
小結 266
習題 266
第12 章組合與繼承268
12.1組合268
12.2繼承270
12.2.1單繼承271
12.2.2基類成員在派生類中的訪問特性272
12.2.3派生類對象的構造、析構與賦值操作274
12.2.4重定義基類的函式279
12.2.5派生類作為基類281
12.2.6將派生類對象隱式轉換為基類對象282
12.3多態性與虛函式284
12.3.1多態性284
12.3.2虛函式284
12.3.3虛析構函式288
12.4純虛函式和抽象類288
12.4.1純虛函式288
12.4.2抽象類288
12.5多繼承289
12.5.1多繼承的格式289
12.5.2名字衝突290
12.5.3虛基類291
12.6面向對象設計範例291
12.7編程規範和常見錯誤298
小結298
習題298
第13 章泛型機制——模板301
13.1類模板的定義301
13.2類模板的實例化303
13.3模板的編譯304
13.4非類型參數和參數的默認值304
13.5類模板的友元306
13.5.1普通友元306
13.5.2模板的特定實例的友元306
13.6類模板作為基類310
13.7編程規範及常見錯誤311
小結311
習題312
第14 章輸入/輸出與檔案313
14.1流與標準庫313
14.2輸入/輸出緩衝314
14.3基於控制台的輸入/輸出315
14.3.1輸出流315
14.3.2輸入流318
14.3.3格式化的輸入/輸出321
14.4基於檔案的輸入/輸出324
14.4.1檔案的概念324
14.4.2檔案和流325
14.4.3檔案的順序訪問328
14.4.4檔案的隨機處理330
14.4.5用流式檔案處理含有記錄的檔案332
14.5基於字元串的輸入/輸出337
14.6編程規範及常見錯誤338
小結338
習題338
第15 章異常處理341
15.1傳統的異常處理方法341
15.2異常處理機制341
15.2.1異常拋出342
15.2.2異常捕獲343
15.3異常規格說明347
15.4編程規範和常見錯誤348
小結349
習題349
第16 章容器和疊代器 351
16.1容器 351
16.2疊代器 351
16.3容器和疊代器的設計示例352
16.3.1用數組實現的容器 352
16.3.2用鍊表實現的容器 355
小結358
習題358
附錄ASCII 表 359
參考文獻360