標(biāo)準(zhǔn)C++程序設(shè)計(jì)(第2版)
定 價(jià):39.9 元
- 作者:牛連強(qiáng) 等編著
- 出版時(shí)間:2017/3/1
- ISBN:9787121306631
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312
- 頁碼:
- 紙張:膠版紙
- 版次:2
- 開本:16開
本書可作為第二門程序設(shè)計(jì)課程的教材,*好應(yīng)在學(xué)過C語言之后使用。本書內(nèi)容包括過程化設(shè)計(jì)和面向?qū)ο髢刹糠謽?gòu)成,但對(duì)過程化設(shè)計(jì)只以很少篇幅做提要式介紹。全書共分10章。第1章介紹C 語言的預(yù)備知識(shí),并用簡單示例比較了過程化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)在思考問題上的差異,介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的主要特點(diǎn),基本的面向?qū)ο髥栴}分析和程序設(shè)計(jì)方法。第2章介紹C 語言的過程化語法,并對(duì)C 語言中的基本對(duì)象作了滲透。第3、4章介紹C 語言的封裝特性,第5、6章分別介紹繼承和多態(tài)性。第7、8章分別討論運(yùn)算符重載和流技術(shù)。第9章簡要說明了建立在類模板基礎(chǔ)上的泛型編程技術(shù)。第10章介紹了C 的異常處理機(jī)制。本書的每章開始以精煉的語言扼要說明其主要內(nèi)容,難點(diǎn)被適當(dāng)?shù)胤纸庠诟髡吕。部分重點(diǎn)章節(jié)安排了若干有實(shí)際背景的設(shè)計(jì)案例。每章*后配備了若干思考題和相當(dāng)數(shù)量的習(xí)題。思考題有助于理解語言的語法現(xiàn)象,值得認(rèn)真對(duì)照教材去分析,或者構(gòu)造適當(dāng)?shù)睦尤?shí)驗(yàn),而通過完成這些習(xí)題,有助于對(duì)知識(shí)點(diǎn)的透徹掌握。為了幫助學(xué)習(xí)者順利進(jìn)行編程實(shí)踐,書后以附錄形式對(duì)C Builder 6.0、DEV C 和Visual C 6.0這幾種環(huán)境的編程甚至程序調(diào)試方法都給出了適度介紹。
前 言
C 是計(jì)算機(jī)軟件領(lǐng)域中覆蓋面最廣的編程語言,得到了極為廣泛的關(guān)注并有大量應(yīng)用C 開發(fā)的應(yīng)用系統(tǒng)。以介紹C 編程為目的的圖書數(shù)量眾多,包括國內(nèi)外學(xué)者撰寫的各種設(shè)計(jì)類、教材類書籍,其中不乏學(xué)習(xí)和研究C 語言程序設(shè)計(jì)的經(jīng)典,如《C Primer中文版》、《C 語言程序設(shè)計(jì)(特別版)》和《Effective C 》等。不過,因?yàn)镃 語言本身的內(nèi)容多,也有很多技術(shù)和概念較為復(fù)雜,還有部分技術(shù)甚至脫離了開發(fā)者的范疇。因此,如何對(duì)內(nèi)容進(jìn)行取舍,以什么樣的方式討論所涉及的技術(shù),怎樣有效地結(jié)合工程實(shí)踐,都是值得思考的問題。事實(shí)上,各類學(xué)校開設(shè)C 課程的時(shí)間、先期的課程安排、教學(xué)大綱的要求等都不盡相同,而多數(shù)學(xué)習(xí)者也不是以成為C 語言的專家為目標(biāo),注重的是掌握必備的知識(shí),能更好地應(yīng)用其從事軟件開發(fā)工作;谶@些觀點(diǎn),我們編寫了《標(biāo)準(zhǔn)C 程序設(shè)計(jì)》(第一版),力圖以有限的篇幅透徹講解標(biāo)準(zhǔn)C 語言的核心內(nèi)容。
本書在第一版的基礎(chǔ)上,結(jié)合教學(xué)要求的變化和教學(xué)過程反映出來的問題,對(duì)原書做了較大幅度的調(diào)整,對(duì)結(jié)構(gòu)化的程序設(shè)計(jì)內(nèi)容進(jìn)行壓縮,擴(kuò)展對(duì)面向?qū)ο蠓治雠c設(shè)計(jì)方法的討論,并增加項(xiàng)目案例以強(qiáng)化對(duì)工程實(shí)踐的要求。總體上,本書繼承了第一版的特色,同時(shí)又彰顯了一些新的特點(diǎn):
? 簡潔通俗、平實(shí)透徹講解 從過程化程序設(shè)計(jì)過渡到面向?qū)ο笠馕吨鴮?duì)問題的看待和處理方法的轉(zhuǎn)變,甚至要花相當(dāng)?shù)木磙D(zhuǎn)變觀念。因此,將重點(diǎn)問題概括、展開,用通俗的語言講清道理,而不是用代碼代替。
? 概括、突出問題核心 對(duì)解決一類問題的核心內(nèi)容給予總結(jié)、概括和突出,說明此類問題的實(shí)質(zhì)和解決方法的關(guān)鍵而不是一個(gè)具體題目的解法。
? 由淺入深、循序漸進(jìn)展開問題 在對(duì)相關(guān)知識(shí)點(diǎn)進(jìn)行鋪墊的基礎(chǔ)上,從基本思想和存在的問題入手,邊引導(dǎo)邊展開,逐步說明解決問題的技術(shù)和方法,避免突兀和跳躍,增強(qiáng)沉浸感。
? 適當(dāng)引入工程問題 選取領(lǐng)域中有代表性的工程應(yīng)用實(shí)踐問題作為設(shè)計(jì)案例,使學(xué)習(xí)更靠近應(yīng)用,激發(fā)課程學(xué)習(xí)和解決實(shí)際問題的興趣。
? 突出重要理念和思想 作為教材,對(duì)于重要的核心問題、關(guān)鍵技術(shù)和應(yīng)該遵循的理念給出特殊提示,這些提示貫穿于各主要知識(shí)點(diǎn),對(duì)應(yīng)重點(diǎn)掌握的核心知識(shí)進(jìn)行強(qiáng)化。同時(shí),這些提示可作為注意事項(xiàng),對(duì)程序設(shè)計(jì)者積累經(jīng)驗(yàn)、養(yǎng)成良好習(xí)慣具有很好的警示作用。
本書可作為第二門程序設(shè)計(jì)課程的教材,最好應(yīng)在學(xué)過C語言之后使用。本書內(nèi)容包括過程化設(shè)計(jì)和面向?qū)ο髢刹糠謽?gòu)成,但對(duì)過程化設(shè)計(jì)只以很少篇幅做提要式介紹。全書共分10章。第1章介紹C 語言的預(yù)備知識(shí),并用簡單示例比較了過程化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)在思考問題上的差異,介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的主要特點(diǎn),基本的面向?qū)ο髥栴}分析和程序設(shè)計(jì)方法。第2章介紹C 語言的過程化語法,并對(duì)C 語言中的基本對(duì)象作了滲透。第3、4章介紹C 語言的封裝特性,第5、6章分別介紹繼承和多態(tài)性。第7、8章分別討論運(yùn)算符重載和流技術(shù)。第9章簡要說明了建立在類模板基礎(chǔ)上的泛型編程技術(shù)。第10章介紹了C 的異常處理機(jī)制。
本書的每章開始以精煉的語言扼要說明其主要內(nèi)容,難點(diǎn)被適當(dāng)?shù)胤纸庠诟髡吕。部分重點(diǎn)章節(jié)安排了若干有實(shí)際背景的設(shè)計(jì)案例。每章最后配備了若干思考題和相當(dāng)數(shù)量的習(xí)題。思考題有助于理解語言的語法現(xiàn)象,值得認(rèn)真對(duì)照教材去分析,或者構(gòu)造適當(dāng)?shù)睦尤?shí)驗(yàn),而通過完成這些習(xí)題,有助于對(duì)知識(shí)點(diǎn)的透徹掌握。
書中所有的完整程序代碼都由作者在C Builder 6.0環(huán)境下調(diào)試通過,它們都可以在其他環(huán)境下正常運(yùn)行。為了幫助學(xué)習(xí)者順利進(jìn)行編程實(shí)踐,書后以附錄形式對(duì)C Builder 6.0、DEV C 和Visual C 6.0這幾種環(huán)境的編程甚至程序調(diào)試方法都給出了適度介紹。
對(duì)于學(xué)習(xí)者,掌握程序設(shè)計(jì)技術(shù)最好的途徑就是上機(jī)實(shí)驗(yàn)。為此,本書的每章末給出了大量的實(shí)踐性題目,它們都有不同程度的應(yīng)用背景。我們認(rèn)為,它們是使學(xué)習(xí)者經(jīng)過自身動(dòng)手實(shí)踐并最終掌握利用C 設(shè)計(jì)程序的不可跳躍的階梯。
另外,本書注重程序設(shè)計(jì)的理念和實(shí)際編程技術(shù),目標(biāo)是努力提高學(xué)生的編程能力,擺脫計(jì)算機(jī)專業(yè)畢業(yè)生不會(huì)編程的現(xiàn)象。
本書由牛連強(qiáng)擔(dān)任主編,馬廣焜、任義和張剛分別主要參與了第5、6章、第3、4章和第8、9章的編寫工作,由牛連強(qiáng)進(jìn)行全書統(tǒng)稿。
還應(yīng)該說明,這是一本可以用作48~64學(xué)時(shí)教學(xué)的教材。我們努力從實(shí)用的角度來介紹標(biāo)準(zhǔn)C 語言的基本內(nèi)容和技術(shù)精華,但限于篇幅,更深、更詳細(xì)地研究時(shí)可參考書后列出的參考書目,其中不乏一些經(jīng)典的著作。
本書為授課教師提供電子課件等較為全面的學(xué)習(xí)輔助資源,有需要者請(qǐng)登錄電子工業(yè)出版社(www.phei.com.cn)免費(fèi)下載。
我們希望本書能夠高質(zhì)量地滿足工科學(xué)校計(jì)算機(jī)相關(guān)專業(yè)的教學(xué)需要,也特別希望讀者能夠不吝指出書中的缺點(diǎn)和錯(cuò)誤,以便再版時(shí)能夠得到改進(jìn)。
作者的電子郵箱:niulq@sut.edu.cn。
作 者
牛連強(qiáng),男,沈陽工業(yè)大學(xué)軟件學(xué)院院長、教授二是余年來,長期從事高等學(xué)校計(jì)算機(jī)領(lǐng)域的教學(xué)和科研工作,教學(xué)經(jīng)驗(yàn)豐富、科研項(xiàng)目成果豐富,并出版了多部教材和專著,發(fā)表論文40余篇。
目 錄
第1章 C 語言與面向?qū)ο蟪绦蛟O(shè)計(jì)概述1
1.1 C 語言概述1
1.1.1 標(biāo)準(zhǔn)C 語言的產(chǎn)生與發(fā)展1
1.1.2 編寫簡單的C 語言程序2
1.2 由過程化到面向?qū)ο蟪绦蛟O(shè)計(jì)4
1.2.1 過程化程序設(shè)計(jì)4
1.2.2 面向?qū)ο蟮某绦蛟O(shè)計(jì)6
1.3 面向?qū)ο蟪绦虻闹饕卣?
1.3.1 抽象與封裝(encapsulation)8
1.3.2 由繼承(inheritance)實(shí)現(xiàn)重用9
1.3.3 由多態(tài)(polymorphism)反映
變革10
1.4 面向?qū)ο蟮膯栴}分析11
1.4.1 確定類11
1.4.2 確定類的屬性11
1.4.3 確定類的方法12
1.4.4 確定對(duì)象模式12
思考與練習(xí)113
實(shí)驗(yàn)113
第2章 C 語言基礎(chǔ)14
2.1 標(biāo)識(shí)符與關(guān)鍵字14
2.1.1 標(biāo)識(shí)符14
2.1.2 關(guān)鍵字14
2.2 數(shù)據(jù)與數(shù)據(jù)類型15
2.2.1 基本數(shù)據(jù)類型15
2.2.3 字面值15
2.2.4 符號(hào)常量16
2.2.5 變量18
2.3 基本運(yùn)算18
2.3.1 運(yùn)算符和表達(dá)式18
2.3.2 數(shù)據(jù)類型轉(zhuǎn)換與造型20
2.4 語句與流程控制21
2.4.1 簡單語句與復(fù)合語句21
2.4.2 分支語句22
2.4.3 循環(huán)語句23
2.4.4 流程轉(zhuǎn)向語句24
2.4.5 數(shù)據(jù)輸入與輸出25
2.5 指針、數(shù)組與引用26
2.5.1 指針26
2.5.2 數(shù)組28
2.5.3 引用30
2.6 函數(shù)31
2.6.1 函數(shù)的定義與聲明31
2.6.2 函數(shù)調(diào)用與參數(shù)匹配32
2.6.3 函數(shù)返回值與函數(shù)調(diào)用表達(dá)式35
2.6.4 形式參數(shù)的默認(rèn)值37
2.6.5 內(nèi)聯(lián)函數(shù)37
2.6.6 函數(shù)重載38
2.6.7 函數(shù)模板39
2.7 new、delete與動(dòng)態(tài)對(duì)象42
2.7.1 動(dòng)態(tài)生成和銷毀一個(gè)對(duì)象42
2.7.2 動(dòng)態(tài)生成和銷毀對(duì)象數(shù)組43
2.8 名字空間43
2.8.1 名字沖突及對(duì)策43
2.8.2 定義和使用名字空間44
2.9 預(yù)處理指令45
2.9.1 宏定義45
2.9.2 條件編譯46
2.9.3 文件包含46
思考與練習(xí)247
實(shí)驗(yàn)250
第3章 類、對(duì)象與封裝51
3.1 類51
3.1.1 類的含義與表述51
3.1.2 類定義的語法規(guī)則52
3.2 對(duì)象55
3.2.1 對(duì)象定義55
3.2.2 成員訪問56
3.2.3 對(duì)象存儲(chǔ)58
3.3 類的方法59
3.3.1 為類提供必要的方法59
3.3.2 inline方法61
3.3.3 const方法61
3.3.4 隱含的this指針62
3.3.5 方法重載與缺省參數(shù)63
3.3.6 類的模板函數(shù)方法64
3.4 構(gòu)造與析構(gòu)64
3.4.1 初始化的難題64
3.4.2 構(gòu)造函數(shù)與對(duì)象初始化65
3.4.3 無名對(duì)象67
3.4.4 對(duì)象數(shù)組與動(dòng)態(tài)對(duì)象68
3.4.5 初始化列表與特殊成員的
初始化69
3.4.6 共用體類與位域類71
3.4.7 析構(gòu)函數(shù)與對(duì)象拆除72
3.5 拷貝構(gòu)造與對(duì)象拆除73
3.5.1 拷貝構(gòu)建新對(duì)象73
3.5.2 改變?nèi)笔〉目截愋袨?4
3.5.3 拷貝構(gòu)造器的實(shí)現(xiàn)75
3.5.4 用自己定義的析構(gòu)器拆除對(duì)象76
3.6 字符串類string76
3.6.1 string類的屬性與對(duì)象構(gòu)造76
3.6.2 string類支持的主要運(yùn)算76
3.6.3 string類的主要方法77
3.7 案例一:設(shè)計(jì)一個(gè)棧類78
3.8 案例二:公司員工類的設(shè)計(jì)(一)80
思考與練習(xí)383
實(shí)驗(yàn)385
第4章 類的靜態(tài)成員、友元與指針訪問87
4.1 靜態(tài)成員87
4.1.1 靜態(tài)屬性87
4.1.2 靜態(tài)方法90
4.2 友元91
4.2.1 友元函數(shù)91
4.2.2 類方法作為友元92
4.2.3 友元類93
4.3 指向類成員的指針94
4.3.1 利用普通指針訪問屬性94
4.3.2 指向非靜態(tài)方法的指針95
4.4 案例三:賬戶類的設(shè)計(jì)96
思考與練習(xí)498
實(shí)驗(yàn)4100
第5章 繼承與重用101
5.1 繼承的概念與表示101
5.1.1 繼承與派生101
5.1.2 繼承關(guān)系的描述102
5.2 繼承的實(shí)現(xiàn)103
5.2.1 繼承的語法形式103
5.2.2 訪問父類的成員104
5.3 類之間的關(guān)系與類的構(gòu)造107
5.3.1 繼承與聚集108
5.3.2 子類的構(gòu)造109
5.3.3 派生類的析構(gòu)110
5.4 復(fù)雜對(duì)象的構(gòu)造與析構(gòu)111
5.4.1 責(zé)任重大的構(gòu)造器111
5.4.2 類成員的構(gòu)造與析構(gòu)次序112
5.5 繼承的工作方式113
5.5.1 派生類是一種(個(gè))基類113
5.5.2 利用指針和引用的訪問114
5.5.3 非public方式派生114
5.6 案例四:公司員工類的設(shè)計(jì)(二)115
5.6.1 雇員類的定義115
5.6.2 工人類的定義116
5.6.3 經(jīng)理類的定義117
思考與練習(xí)5118
實(shí)驗(yàn)5121
第6章 虛函數(shù)與多態(tài)性122
6.1 多態(tài)性及其語法規(guī)則122
6.1.1 多態(tài)性與聯(lián)編方式122
6.1.2 用虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)綁定123
6.2 共同基類下的對(duì)象訪問124
6.2.1 概念中的共性124
6.2.2 公共基類125
6.2.3 利用虛函數(shù)支持動(dòng)態(tài)訪問126
6.3 對(duì)虛函數(shù)的進(jìn)一步討論127
6.3.1 如何構(gòu)成虛函數(shù)關(guān)系127
6.3.2 類的構(gòu)造、析構(gòu)與虛函數(shù)129
6.3.3 虛函數(shù)的內(nèi)部實(shí)現(xiàn)機(jī)制130
6.3.4 重載、覆蓋和隱藏132
6.3.5 動(dòng)態(tài)造型(dynamic_cast)134
6.4 純虛函數(shù)與抽象類135
6.4.1 純虛函數(shù)135
6.4.2 抽象類136
6.5 多重繼承138
6.5.1 多重繼承的語法規(guī)則138
6.5.2 多重繼承中的二義性140
6.5.3 虛繼承141
6.6 案例五:公司員工類的設(shè)計(jì)(三)144
6.6.1 雇員類的定義145
6.6.2 其他類的定義145
思考與練習(xí)6146
實(shí)驗(yàn)6149
第7章 運(yùn)算符重載150
7.1 重載運(yùn)算符的概念與一般方法150
7.1.1 運(yùn)算符重載是函數(shù)重載150
7.1.2 重載運(yùn)算符的兩種方法151
7.1.3 重載運(yùn)算符的限制153
7.2 重載運(yùn)算符的設(shè)計(jì)154
7.2.1 運(yùn)算符函數(shù)的參數(shù)154
7.2.2 運(yùn)算符函數(shù)的返回值154
7.3 常見運(yùn)算符的重載155
7.3.1 重載增量運(yùn)算符 155
7.3.2 重載賦值運(yùn)算符=157
7.3.3 重載==運(yùn)算符和!=運(yùn)算符160
7.3.4 重載下標(biāo)運(yùn)算符[]160
7.3.5 重載類型轉(zhuǎn)換運(yùn)算符()161
7.3.6 重載函數(shù)調(diào)用運(yùn)算符與函數(shù)
對(duì)象162
7.4 案例六:一個(gè)向量類的運(yùn)算符
重載164
7.4.1 向量類定義164
7.4.2 為向量添加運(yùn)算166
思考與練習(xí)7168
實(shí)驗(yàn)7168
第8章 流與文件操作169
8.1 理解流機(jī)制169
8.1.1 流與文件169
8.1.2 從函數(shù)到對(duì)象169
8.1.3 源、匯和iostream流控制類170
8.2 構(gòu)造可流的類172
8.2.1 再談cout和cin對(duì)象172
8.2.2 重載輸出運(yùn)算符<<172
8.2.3 重載輸入運(yùn)算符>>173
8.3 格式控制174
8.3.1 使用流的方法175
8.3.2 使用操控符(Manipulators)179
8.3.3 內(nèi)存格式化(字符串流)182
8.4 文件流183
8.4.1 文件流的打開與關(guān)閉183
8.4.2 文件的讀寫操作185
8.4.3 二進(jìn)制文件186
8.4.4 文件的隨機(jī)訪問187
8.5 案例七:一個(gè)圖書管理系統(tǒng)的
設(shè)計(jì)188
8.5.1 對(duì)象的輸入/輸出189
8.5.2 管理程序189
思考與練習(xí)8191
實(shí)驗(yàn)8191
第9章 類模板、容器與泛型算法192
9.1 類模板192
9.1.1 類模板的定義192
9.1.2 使用類模板193
9.1.3 類模板的方法實(shí)現(xiàn)194
9.1.4 類模板與普通類之間的相互
繼承195
9.1.5 一個(gè)模板類實(shí)例complex196
9.1.6 設(shè)計(jì)一個(gè)隊(duì)列模板Queue197
9.2 容器與泛型199
9.2.1 抽象容器類模板199
9.2.2 泛型編程199
9.3 迭代器202
9.3.1 輸入迭代器(InputIterator)203
9.3.2 輸出迭代器(OutputIterator)204
9.3.3 前向迭代器(ForwardIterator)204
9.3.4 雙向迭代器(BidirectionalIterator)
和隨機(jī)訪問迭代器(Random-
AccessIterator)204
9.3.5 容器提供的迭代器205
9.3.6 插入迭代器(適配器)205
9.3.7 反向迭代器(reverse_iterator)206
9.4 幾種主要容器類與類的方法207
9.4.1 容器類的主要方法207
9.4.2 向量(vector)容器208
9.4.3 列表(list)容器209
9.4.4 雙端隊(duì)列(deque)、棧(stack)
和隊(duì)列(queue)容器210
9.4.5 映射(map)容器210
9.5 常用的通用算法212
9.5.1 只讀算法212
9.5.2 改寫元素算法213
9.5.3 元素排序算法213
思考與練習(xí)9214
實(shí)驗(yàn)9215
第10章 異常處理216
10.1 異常及常規(guī)處理方法216
10.1.1 常見的異常216
10.1.2 常規(guī)處理方法216
10.2 用try-catch結(jié)構(gòu)處理異常218
10.2.1 try-catch異常處理機(jī)制218
10.2.2 異常219
10.2.3 拋出異常219
10.2.4 用try結(jié)構(gòu)監(jiān)視異常220
10.2.5 用catch結(jié)構(gòu)處理異常220
10.3 合理地處理異常222
10.3.1 異常類設(shè)計(jì)222
10.3.2 多catch結(jié)構(gòu)組成的異常
捕捉網(wǎng)224
10.3.3 捕捉自己應(yīng)該處理的異常225
10.3.4 申明異常227
思考與練習(xí)10228
實(shí)驗(yàn)10228
附錄A C Builder集成化環(huán)境的使用229
附錄B DEV-C 與Visual C 6編程
環(huán)境238
附錄C 運(yùn)算符的優(yōu)先級(jí)與結(jié)合性244
參考文獻(xiàn)245