本書系統(tǒng)地講述了C++語言的基本概念和編程方法,首先介紹C++的基本表達式、基本語句和函數(shù),接著闡述面向?qū)ο蟮幕靖拍詈皖悺ο蟮脑O計方法,然后講述C++程序設計的繼承、多態(tài)和輸入輸出結(jié)構(gòu),最后通過實際例子闡明C++程序設計方法和技巧。
本書針對我國計算機程序設計教育的特點,重點放在讓讀者掌握分析問題和解決問題的方法上,力求將復雜的概念用簡潔的語言描述出來,讓讀者學會用C++語言編寫實際應用程序。本書內(nèi)容豐富、結(jié)構(gòu)合理、語言流暢,融趣味性與科學性于一體,同時配有大量習題和實訓題目,讀者可通過學習本書的配套用書《C++程序設計實訓(第2版)》,加深對本書的理解。
本書適合作為大學各專業(yè)程序設計語言課程的教材,也可供各類計算機應用人員學習使用。
第2版前言
C++程序設計(第2版)隨著計算機科學技術(shù)的迅猛發(fā)展和面向?qū)ο蠹夹g(shù)的日臻完善,《C++程序設計》第1版經(jīng)過全國各地師生5年教與學的實踐,受到了眾多讀者的好評與鼓勵,同時也得到了一些有益的修改建議。為了使本書更好地滿足教學的需要,更好地做到思路清晰,通俗易懂,由淺入深,重在實用,更加強調(diào)增強學生的實際編程能力,讓學生學得會、用得上,我們對部分內(nèi)容進行了適當?shù)男抻啞?br />在教材的修訂過程中,作者對C++的知識體系和核心內(nèi)容再次進行了深入的探討,綜合考慮C++的整體結(jié)構(gòu)和C++初學者的接受能力,為了更加適應讀者的學習需求,認真調(diào)整了講授內(nèi)容和表述方式,主要做了如下幾點工作:
(1) 適當調(diào)整了講解內(nèi)容的難易程度,語句更加通俗易懂,題意和題型同時做到循序漸進、由淺入深,更加適合初學者閱讀理解。
(2) 以實用為宗旨,做到多講常用的內(nèi)容,少講罕用的內(nèi)容,不講幾乎不用的內(nèi)容,重寫了第2章數(shù)據(jù)類型和表達式、第3章語句和函數(shù)、第10章輸入流和輸出流以及第12章綜合應用實例的部分內(nèi)容。
(3) 案例更加貼近生活,注重提升學生的學習興趣,適當增加訓練強度,修訂了部分例題和習題。
(4) 改正了第1版出現(xiàn)的一些錯誤,刪除了一些學生反映難懂的部分,補充了相應的易學內(nèi)容,使知識點更加完備,又易于學習掌握。
(5) 書中的所有的程序在VC++6.0環(huán)境下,編譯運行通過,便于學生學習。
安徽大學對本書的修訂工作從人力物力上給予了大力支持,楊為民參加了本書第2版的修訂工作,王書宇參加了本書第2版的第10章輸入流和輸出流及第12章綜合應用實例的重寫工作,高莉參加了本書第2版的第2章數(shù)據(jù)類型和表達式及第3章語句和函數(shù)的重寫工作,紀霞、徐怡也為本書第2版的修訂做了大量的工作。
全國各地的讀者對《C++程序設計》第1版給予了高度評價,同時也提出了許多寶貴的意見和建議,對讀者的厚愛和無私幫助表示衷心的感謝。我的許多同事和學生,對第2版書稿提出了大量寶貴意見,在此表示衷心的感謝。
一切為了讀者,為了一切讀者,為了讀者一切,是我們的心愿和目標,但是由于作者水平有限,難免出現(xiàn)這樣或那樣的錯誤與不足,敬請廣大讀者不吝賜教。
李龍澍
2008年6月30日于安徽大學
第1版前言
C++程序設計(第2版)隨著信息科學的發(fā)展,計算機應用范圍越來越廣,每一個工作者,都有必要學會使用計算機,最基本的要求就是學會一門計算機語言,C++是當前最流行的一種面向?qū)ο蟪绦蛟O計語言,它是在C語言的基礎上擴充發(fā)展起來的,C++程序設計把數(shù)據(jù)和關(guān)于數(shù)據(jù)的操作封裝在一起,這種解決問題的方法更符合人們的思維習慣,使用C++編制程序更方便,軟件維護更容易。
根據(jù)多年的教學經(jīng)驗,本書針對學生學習中遇到的問題,反復修正教學內(nèi)容,總結(jié)啟發(fā)式教學思路,力爭讓學生學得會,用得上。
本書的特點:思路清晰,重點放在讓讀者掌握分析問題和解決問題的方法上;通俗易懂,將復雜的概念用讀者容易理解的簡潔語言描述出來;由淺入深,從最簡單的概念開始讓讀者逐步掌握C++語言的完整體系;重在實用,讓讀者學完本書后會用C++語言編寫實際應用程序。
全書共分12章,第1章C++入門介紹C++的簡單概念,講述應用Visual C++ 6.0編制小程序。第2章數(shù)據(jù)類型和表達式介紹C++的基本數(shù)據(jù)類型和基本表達式。第3章語句和函數(shù)講述C++的基本語句和最小程序?qū)嶓w函數(shù)。第4章類介紹最基本的面向?qū)ο蟾拍铑悾愂荂++的編程基礎。第5章對象講述對象的設計和使用,對象是C++最基本的程序?qū)嶓w。第6章指針和引用講述指針的定義和使用,討論引用的定義和使用。第7章繼承講述類之間的繼承機制。第8章靜態(tài)成員和友元介紹靜態(tài)成員、友元、運算符重載等C++的一些高級編程技巧。第9章多態(tài)和虛函數(shù)討論類之間派生中的動態(tài)繼承問題。第10章輸入/輸出流介紹C++的基本輸入輸出機制。第11章模板和異常處理討論C++的模板使用技巧和異常處理方法。第12章綜合應用實例給出實際應用例子。本書的全部例題在Visual C++ 6.0環(huán)境下運行通過。讀者還可以學習配套的《C++程序設計實訓》,加深對本書的理解。
本書是在李龍澍教授的主持下完成的。初稿的第1、4、5章由李龍澍執(zhí)筆,第2、3章由唐彬執(zhí)筆,第6、7章由盧冰原執(zhí)筆,第8、9、11章由楊增光執(zhí)筆,第10、12章由凌成執(zhí)筆。全書由李龍澍統(tǒng)一修改后定稿。張霞、楊濤、葉紅、龐開放為本書的編寫也做了大量的工作。中國科學技術(shù)大學劉振安教授、安徽大學程慧霞教授為本書提出了許多建設性的寶貴意見,作者表示衷心感謝。
由于作者水平有限,難免出現(xiàn)一些疏漏和錯誤,殷切希望讀者提出批評建議和修改意見。
作者
2002年9月于安徽大學
第1章 C++入門1
1.1 什么是C++1
1.1.1 什么是C++程序設計語言1
1.1.2 C++程序開發(fā)過程1
1.2 一個C++程序3
1.3 C++程序的結(jié)構(gòu)5
1.3.1 主程序5
1.3.2 函數(shù)6
1.3.3 輸入輸出7
1.3.4 頭文件7
1.3.5 注釋8
1.4 例題分析和小結(jié)8
1.4.1 例題8
1.4.2 解題分析10
1.4.3 小結(jié)11
實訓1 編制一個簡單C++的程序12
習題112
第2章 數(shù)據(jù)類型和表達式14
2.1 詞法符號14
2.1.1 標識符14
2.1.2 關(guān)鍵字15
2.1.3 常量15
2.2 基本數(shù)據(jù)類型17
2.2.1 基本數(shù)據(jù)類型18
2.2.2 變量19
2.3 結(jié)構(gòu)數(shù)據(jù)類型21
2.3.1 數(shù)組21
2.3.2 結(jié)構(gòu)體類型26
2.3.3 共用體類型 28
2.4 表達式29
2.4.1 算術(shù)表達式29
2.4.2 關(guān)系表達式31
2.4.3 邏輯表達式31
2.4.4 運算順序32
2.5 例題分析和小結(jié)34
2.5.1 例題34
2.5.2 解題分析38
2.5.3 小結(jié)38
實訓2 標識符和表達式實訓38
C++程序設計(第2版)目錄 習題239
第3章 語句和函數(shù)43
3.1 賦值語句43
3.2 選擇語句45
3.2.1 條件語句45
3.2.2 開關(guān)語句 46
3.3 循環(huán)語句48
3.3.1 while 循環(huán)語句48
3.3.2 for循環(huán)語句50
3.3.3 break和continue語句50
3.3.4 多重循環(huán)51
3.4 函數(shù)52
3.4.1 函數(shù)的定義52
3.4.2 函數(shù)的調(diào)用53
3.4.3 函數(shù)的傳值參數(shù)57
3.4.4 函數(shù)的引用參數(shù)58
3.4.5 函數(shù)的默認參數(shù)59
3.5 函數(shù)的重載60
3.5.1 函數(shù)參數(shù)類型重載60
3.5.2 函數(shù)參數(shù)個數(shù)重載61
3.6 系統(tǒng)函數(shù)的調(diào)用62
3.7 例題分析和小結(jié)63
3.7.1 例題63
3.7.2 解題分析66
3.7.3 小結(jié)66
實訓3 職工信息處理和趣味取球66
習題367
第4章 面向?qū)ο蠡靖拍钆c類71
4.1 面向?qū)ο蟪绦蛟O計的基本概念71
4.1.1 對象71
4.1.2 抽象73
4.1.3 封裝74
4.1.4 繼承75
4.1.5 多態(tài)76
4.2 類77
4.2.1 類的定義77
4.2.2 類的數(shù)據(jù)成員79
4.2.3 類的成員函數(shù)80
4.2.4 類成員存取權(quán)限83
4.3 成員函數(shù)重載84
4.4 例題分析和小結(jié)87
4.4.1 例題87
4.4.2 解題分析88
4.4.3 小結(jié)88
實訓4 建造集合類實訓89
習題489
第5章 對象92
5.1 對象的建立和撤銷92
5.1.1 對象的定義92
5.1.2 構(gòu)造函數(shù)95
5.1.3 析構(gòu)函數(shù)100
5.2 對象的賦值103
5.2.1 復制構(gòu)造函數(shù)103
5.2.2 重載賦值運算符107
5.2.3 修改對象的數(shù)據(jù)成員108
5.3 例題分析和小結(jié)110
5.3.1 例題110
5.3.2 解題分析111
5.3.3 小結(jié)112
實訓5 數(shù)組數(shù)據(jù)處理對象實訓112
習題5113
第6章 指針和引用117
6.1 指針117
6.1.1 指針變量的定義117
6.1.2 指針的賦值118
6.1.3 對象指針121
6.1.4 this指針124
6.2 引用125
6.2.1 引用的定義和使用125
6.2.2 引用返回值127
6.3 例題分析和小結(jié)128
6.3.1 例題128
6.3.2 解題分析129
6.3.3 小結(jié)129
實訓6 編制一個排序數(shù)組類129
習題6130
第7章 繼承134
7.1 基類和派生類134
7.1.1 派生類的定義134
7.1.2 繼承方式136
7.2 單繼承137
7.2.1 繼承成員的訪問權(quán)限137
7.2.2 構(gòu)造函數(shù)和析構(gòu)函數(shù)141
7.2.3 單繼承的應用143
7.3 多繼承145
7.3.1 多繼承的概念145
7.3.2 多繼承的構(gòu)造函數(shù)146
7.3.3 多繼承的應用147
7.4 虛基類148
7.4.1 虛基類的定義148
7.4.2 虛基類的構(gòu)造函數(shù)149
7.4.3 虛基類的應用150
7.5 例題分析和小結(jié)152
7.5.1 例題152
7.5.2 例題分析154
7.5.3 小結(jié)154
實訓7 人員類的繼承155
習題7155
第8章 靜態(tài)成員和友元159
8.1 靜態(tài)成員159
8.1.1 靜態(tài)成員的定義159
8.1.2 靜態(tài)成員的使用160
8.2 友元162
8.2.1 友元的定義162
8.2.2 友元的使用164
8.3 運算符重載166
8.3.1 運算符重載規(guī)則167
8.3.2 重載為成員函數(shù)167
8.3.3 重載為友元函數(shù)169
8.4 例題分析和小結(jié)171
8.4.1 例題171
8.4.2 解題分析175
8.4.3 小結(jié)175
實訓8 個人所得稅計算和運算符重載175
習題8177
第9章 多態(tài)和虛函數(shù)178
9.1 虛函數(shù)178
9.1.1 虛函數(shù)的定義178
9.1.2 純虛函數(shù)182
9.2 抽象類183
9.3 多態(tài)185
9.3.1 多態(tài)的概念186
9.3.2 多態(tài)的應用186
9.4 例題分析和小結(jié)187
9.4.1 例題187
9.4.2 解題分析190
9.4.3 小結(jié)190
實訓9 應用多態(tài)設計學生類190
習題9191
第10章 輸入流和輸出流193
10.1 輸入流和輸出流的概念193
10.1.1 基本概念193
10.1.2 輸入輸出類庫194
10.2 輸出流195
10.2.1 基本輸出操作195
10.2.2 按指定格式輸出數(shù)據(jù)197
10.3 輸入流202
10.4 文件205
10.4.1 文件的打開和關(guān)閉205
10.4.2 文件的讀寫207
10.4.3 文件的隨機讀寫211
10.5 例題分析與小結(jié)214
10.5.1 例題214
10.5.2 解題分析216
10.5.3 小結(jié)216
實訓10 輸入流和輸出流217
習題10217
第11章 模板和異常處理220
11.1 模板220
11.1.1 模板的定義220
11.1.2 模板的使用221
11.2 異常處理223
11.2.1 異常處理的語法結(jié)構(gòu)223
11.2.2 異常處理的應用224
11.3 例題分析和小結(jié)225
11.3.1 例題225
11.3.2 解題分析227
11.3.3 小結(jié)227
實訓11 建造數(shù)組模板和異常處理228
習題11228
第12章 綜合應用實例231
12.1 商場員工信息登記系統(tǒng)231
12.1.1 問題的描述231
12.1.2 類設計231
12.1.3 源代碼232
12.2 小結(jié)242
實訓12 倉庫商品檢查登記管理系統(tǒng)243
參考文獻244