C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程
定 價(jià):28 元
- 作者:游洪躍 編
- 出版時(shí)間:2010/3/1
- ISBN:9787302220589
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP312C
- 頁碼:270
- 紙張:膠版紙
- 版次:1
- 開本:16開
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程》共分為8章。闡述了c++的特點(diǎn)和開發(fā)過程;面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)、類的定義、對(duì)象的創(chuàng)建及訪問,友元與靜態(tài)成員等基本內(nèi)容;模板編程方法,運(yùn)算符重載;C++的繼承機(jī)制及虛基類,多態(tài)性,輸入輸出流,C++中的其他主題。
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程》可作為高等院校計(jì)算機(jī)及相關(guān)專業(yè)“c++面向?qū)ο蟪绦蛟O(shè)計(jì)”課程的教材,也可供其他從事軟件開發(fā)工作的讀者參考使用。同時(shí),也適合初學(xué)程序設(shè)計(jì)或有一定編程實(shí)踐基礎(chǔ)、希望突破編程難點(diǎn)的讀者作為自學(xué)教材。通過《C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程》的學(xué)習(xí),讀者能迅速提高C++面向?qū)ο蟪绦蛟O(shè)計(jì)的能力。
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程》取材新穎,內(nèi)容豐富,可讀性強(qiáng)!禖++面向?qū)ο蟪绦蛟O(shè)計(jì)教程》充分考慮了讀者對(duì)書中部分內(nèi)容的心理適應(yīng)性,對(duì)于一些容易讓讀者產(chǎn)生畏懼心理的內(nèi)容作了適當(dāng)?shù)奶幚!禖++面向?qū)ο蟪绦蛟O(shè)計(jì)教程》所有程序都在Visual C++6.0、Visual C++2005、Visual C+十2005 Express、Dev C+十和MinGW Developer Studi0開發(fā)環(huán)境中進(jìn)行了嚴(yán)格的測(cè)試,在作者教學(xué)網(wǎng)站上提供了大量的教學(xué)支持內(nèi)容。
作者使用過數(shù)本C++面向?qū)ο蟪绦蛟O(shè)計(jì)的教材,發(fā)現(xiàn)不少問題,C++教學(xué)的普遍結(jié)果是,學(xué)生學(xué)完了C++,但卻不會(huì)使用目前流行的C++開發(fā)工具編寫程序。而且不少教材都存在錯(cuò)誤。例如某C++語言經(jīng)典教材在關(guān)于打開文件的代碼中出現(xiàn)了類似如下的代碼: ofstream outFile; // 定義文件變量
if (outFile.open("test.txt", ios::app)) // 以追加方式打開文件
{ // 打開文件失敗
cout <<"打開文件失敗!" < exit(1); // 退出程序
}上面代碼完全不能通過編譯,原因是文件流類的成員函數(shù)open()返回值類型為void,出現(xiàn)這些錯(cuò)誤的原因是作者想當(dāng)然按照C語言類似函數(shù)fopen()編寫代碼,沒有上機(jī)測(cè)試所寫代碼,至使學(xué)生看完書后還不能上機(jī)編程或上機(jī)編程非常困難,實(shí)際上只要上機(jī)運(yùn)行很容易就能發(fā)現(xiàn)類似的錯(cuò)誤及錯(cuò)誤的原因,可按如下方式進(jìn)行修改: ofstream outFile; // 定義文件變量
outFile.open("test.txt", ios::app); // 以追加方式打開文件
if (outFile.fail())
{ // 打開文件失敗
cout <<"打開文件失敗!" < exit(1); // 退出程序
}書籍中存在錯(cuò)誤是在所難免的,但是這種潛在錯(cuò)誤對(duì)讀者的影響是難以估量的。由于這類教材的讀者面太大,讀者很難有機(jī)會(huì)發(fā)現(xiàn)這種錯(cuò)誤,并會(huì)一直延續(xù)這種錯(cuò)誤的觀念,這類問題在一些教材中存在了十多年,甚至最近的最新版也依然存在。
傳統(tǒng)的C++教學(xué)都過于注重解釋C++語言本身,而忽視了其在具體環(huán)境中的使用指導(dǎo),例如對(duì)于如下的類聲明及相關(guān)代碼: #include // 編譯預(yù)處理命令
using namespace std; // 使用命名空間std
// 聲明復(fù)數(shù)數(shù)
class Complex
{
private:
// 數(shù)據(jù)成員
double real; // 實(shí)部
double image; // 虛部
public:
// 公有函數(shù)
Complex(double r = 0, double i = 0): real(r), image(i){} // 構(gòu)造函數(shù)
friend Complex operator+(const Complex andz1, const Complex andz2) // 復(fù)數(shù)加法
{ return Complex(z1.real+z2.real, z1.image+z2.image); }
…
};上面的類聲明及相關(guān)代碼在Visual C++ 2005、Visual C++ 2005 Express、Dev-C++ 4.9.9.2和MinGW Developer Studio 2.05都能正常通過運(yùn)行,但在Visual C++ 6.0 SP6下會(huì)出現(xiàn)編譯時(shí)錯(cuò)誤,是Visual C++ 6.0的一個(gè)Bug,在Visual C++ 6.0中可將: #include // 編譯預(yù)處理命令
using namespace std; // 使用命名空間std 改為: #include // 編譯預(yù)處理命令
#include // 包含system()的聲明這時(shí)才可正常運(yùn)行,又比如對(duì)于輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”重載為類的友元函數(shù)時(shí),采用標(biāo)準(zhǔn)頭文件iostrteam,在Visual C++ 6.0 SP6、Visual C++ 2005、Visual C++ 2005 Express、Dev-C++ 4.9.9.2和MinGW Developer Studio 2.05中都不能通過編譯,只能在Visual C++ 6.0中采用傳統(tǒng)的頭文件iostream.h才能通過編譯。但將輸入運(yùn)算符 ">>" 和輸出運(yùn)算符“<<”重載為普通函數(shù)時(shí)無任何編譯問題。
可惜的是,作者還沒有發(fā)現(xiàn)哪本教材對(duì)上面類似的具體編程環(huán)境進(jìn)行詳細(xì)指導(dǎo),這類教材無形中大大增加了學(xué)生應(yīng)用C++的難度。
本書作者經(jīng)過十多年教學(xué)及查閱大量參考資料后編寫了本書,全書共分為8章。第1章闡述C++的主要特點(diǎn)及C++程序開發(fā)過程,還詳細(xì)介紹了C++在非面向?qū)ο蠓矫娴某S眯绿匦。?章介紹了面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù),C++類的定義、對(duì)象的創(chuàng)建以及對(duì)象成員的訪問,友元與靜態(tài)成員等基本內(nèi)容。第3章介紹了模板編程方法,并對(duì)模板容易出現(xiàn)的編程問題進(jìn)行詳細(xì)的討論。第4章介紹了運(yùn)算符重載,重點(diǎn)對(duì)不同C++編譯器使用運(yùn)算符重載時(shí)的兼容性問題進(jìn)行具體指導(dǎo)。第5章著重介紹了C++的繼承機(jī)制及虛基類。第6章介紹了多態(tài)性,重點(diǎn)介紹了虛函數(shù)和抽象類。第7章介紹了輸入輸出流,重點(diǎn)討論標(biāo)準(zhǔn)輸入輸出流類、文件操作與文件流類。第8章對(duì)C++中的其他主題進(jìn)行了深入闡述,這些主題都是難點(diǎn),但都不是重點(diǎn)。如果這些內(nèi)容在前面的章節(jié)中加以討論,對(duì)于學(xué)生就會(huì)因難度過大而較難進(jìn)入面向?qū)ο蟮乃季S模式,當(dāng)學(xué)生已具備面向?qū)ο蟮乃季S習(xí)慣以后,再來介紹這些典型問題應(yīng)該比較合適。
對(duì)于初學(xué)者,考試時(shí)往往會(huì)感到茫然而不知所措,因此本書習(xí)題包括了選擇題、填空題和編譯題。這些題目選自于考試題,可供學(xué)生期末復(fù)習(xí),也可供教師編寫試題時(shí)參考,對(duì)教師還提供了習(xí)題參考答案。
本書在部分章節(jié)中還提供了實(shí)例研究,主要提供給那些精力充沛的學(xué)生深入學(xué)習(xí)與研究,這些實(shí)例包括對(duì)正文內(nèi)容的應(yīng)用(例如第6.4節(jié)中棧的實(shí)現(xiàn)實(shí)際上就是抽象類的一個(gè)典型應(yīng)用,第7.5節(jié)中的簡(jiǎn)單工資管理系統(tǒng)就是文件操作的應(yīng)用)、讀者深入學(xué)習(xí)時(shí)可能會(huì)遇到的算法(例如第3.4節(jié)中的快速排序)以及應(yīng)用所學(xué)知識(shí)解決實(shí)際問題(例如第7.5節(jié)中的簡(jiǎn)單工資管理系統(tǒng)就是文件操作實(shí)現(xiàn)簡(jiǎn)單信息管理系統(tǒng)),通過讀者對(duì)實(shí)例研究的學(xué)習(xí),可提高實(shí)際應(yīng)用C++面向?qū)ο蟪绦蛟O(shè)計(jì)的能力,當(dāng)然有一定的難度,但應(yīng)比讀者的想象更易學(xué)習(xí)與掌握。
為了盡快提高讀者的實(shí)際編程能力,本書各章提供了程序陷阱,包含了在實(shí)際編程時(shí)容易出現(xiàn)的問題,也包括了正文內(nèi)容的深入討論,還包括了對(duì)C++編譯環(huán)境中存在兼容性問題進(jìn)行了實(shí)用而具體的指導(dǎo),這部分內(nèi)容不管對(duì)初學(xué)者還是長(zhǎng)期編程的人都很有用。
現(xiàn)在談?wù)動(dòng)嘘P(guān)C++編譯器的問題,在C++之外的任何編程語言中,編譯器都沒有受到過如此的重視。這是因?yàn)镃++是一門非常復(fù)雜的語言,以至于編譯器也難于構(gòu)造,我們常用的編譯器都不能完全符合C++標(biāo)準(zhǔn),如下介紹一些常用的優(yōu)秀C++編譯器。
(1) Visual C++編譯器。由微軟開發(fā),現(xiàn)在主要流行Visual C++ 6.0、Visual C++ 2005以及Visual C++ 2005 Express,特點(diǎn)是集成開發(fā)環(huán)境用戶界面友好,信息提示準(zhǔn)確,調(diào)試方便,對(duì)模板支持最完善;Visual C++ 6.0對(duì)硬件環(huán)境要求低,現(xiàn)在安裝的計(jì)算機(jī)最多,但對(duì)標(biāo)準(zhǔn)C++兼容只有83.43%, Visual C++ 2005與Visual C++ 2005 Express在軟件提示信息上做了進(jìn)一步的優(yōu)化與改進(jìn),并且對(duì)標(biāo)準(zhǔn)C++兼容達(dá)到了98%以上的程度,但對(duì)硬件的要求較高;還有Visual C++ 2005 Express是一種輕量級(jí)的Visual C++軟件,對(duì)于編程愛好者、學(xué)生和初學(xué)者來說是很好的編程工具。微軟在2006年4月22日正式宣布 Visual Studio 2005 Express版永久免費(fèi)。
(2) GCC編譯器。著名的開源C++編譯器。是類UNIX操作系統(tǒng)(例如Linux)下編寫C++程序的首選,有非常好的可移植性,可以在非常廣泛的平臺(tái)上使用,也是編寫跨平臺(tái)、嵌入式程序很好的選擇。GCC 3.3與標(biāo)準(zhǔn)C++兼容能夠達(dá)到96.15%。現(xiàn)已有一些移植在Windows環(huán)境下使用GCC編譯器的IDE(集成開發(fā)環(huán)境),例如Dev-C++與MinGW Developer Studio,其中Dev-C++是能夠讓GCC在Windows下運(yùn)行的集成開發(fā)環(huán)境,提供了與專業(yè)IDE相媲美的語法高亮、代碼提示和調(diào)試等功能;MinGW Developer Studio是跨平臺(tái)下的GCC集成開發(fā)環(huán)境,目前支持 Windows、Linux和 FreeBSD;根據(jù)作者的實(shí)際使用,感覺使用GCC編譯器的IDE錯(cuò)誤信息提示的智能較低,錯(cuò)誤提示不太準(zhǔn)確,還有就是對(duì)模板支持較差,但對(duì)語法檢查較嚴(yán)格,在Visual C++編譯器中編譯通過的程序可能在GCC編譯器的IDE還會(huì)顯示有錯(cuò)誤信息。
本書所有算法都同時(shí)在Visual C++ 6.0、Visual C++ 2005、Visual C++ 2005 Express、Dev-C++和MinGW Developer Studio中通過測(cè)試。讀者可根據(jù)實(shí)際情況選擇適當(dāng)?shù)木幾g器,建議選擇Visual C++ 6.0.
教師可采取多種方式來使用本書作為講授C++面向程序設(shè)計(jì),應(yīng)該根據(jù)學(xué)生的背景知識(shí)以及課程的學(xué)時(shí)數(shù)來進(jìn)行內(nèi)容的取舍。為滿足不同層次的教學(xué)需求,本教材使用了分層的思想,分層方法如下:沒有加星號(hào)“*”及雙星號(hào)“”的部分是基本內(nèi)容,適合所有讀者學(xué)習(xí);加有星號(hào)“*”的部分適合計(jì)算機(jī)專業(yè)的讀者作為深入學(xué)習(xí)的選學(xué)部分;加有雙星號(hào)“”的部分適合于感興趣的讀者研究。
作者為本書提供了全面的教學(xué)支持,如果在教學(xué)或?qū)W習(xí)過程中發(fā)現(xiàn)與本書有關(guān)的任何問題都可以與作者聯(lián)系:youhongyue168@gmail.com,作者將盡力滿足各位的要求,并可能將解答公布在作者的教學(xué)網(wǎng)站http://cs.scu.edu.cn/~youhongyue上。在教學(xué)網(wǎng)站上將提供如下內(nèi)容。
(1) 提供書中所有例題在Visual C++ 6.0、Visual C++ 2005、Visual C++ 2005 Express、Dev-C++和MinGW Developer Studio開發(fā)環(huán)境中的測(cè)試程序,今后還會(huì)提供當(dāng)時(shí)流行的C++開發(fā)環(huán)境的測(cè)試程序,還提供本書作者開發(fā)的軟件包。
(2) 提供教學(xué)用PowerPoint幻燈片PPT課件。
(3) 向教師提供所有習(xí)題參考答案,對(duì)學(xué)生來講,將在每學(xué)期期末(第15周~第20周)公布解壓密碼。
(4) 提供高級(jí)語言程序設(shè)計(jì)問答專欄。
(5) 提供至少6套C++面向?qū)ο蟪绦蛟O(shè)計(jì)模擬試題及其解答,以供學(xué)生期末復(fù)習(xí),也可供教師出考題時(shí)參考。
(6) 提供C++面向?qū)ο蟪绦蛟O(shè)計(jì)相關(guān)的其他資料(例如Dev-C++與MinGW Developer Studio軟件、流行免費(fèi)C++編譯器的下載網(wǎng)址).
希望各位讀者能夠抽出寶貴的時(shí)間,將對(duì)本教材的建議或意見寄給作者,你的意見將是我們?cè)侔嫘抻喗滩牡闹匾獏⒖肌?br />何凱霖、姜琳、聶清彬、黃維、游倩、鄒昌文、王文昌、周焯華、胡開文、沈潔、周德華、歐陽、文濤、文芝明和文波等人對(duì)本書做了大量的工作,包括編寫部分章節(jié),提供資料,調(diào)試算法,參與了部分內(nèi)容的編寫,在此特向他們表示感謝;作者還要感謝為本書提供直接或間接幫助的每一位朋友,由于你們熱情的幫助或鼓勵(lì)激發(fā)了作者寫好本書的信心和寫作熱情。
本書的出版要感謝清華大學(xué)出版社編輯,由于他們?yōu)楸緯某霭鎯A注了大量熱情,也由于他們具有前瞻性的眼光才讓讀者有機(jī)會(huì)看到本書。
盡管作者有良好而負(fù)責(zé)任的嚴(yán)格態(tài)度,并盡了最大努力,但由于作者水平有限,書中難免有不妥之處,因此,敬請(qǐng)各位讀者不吝賜教,以便作者有一個(gè)提高的機(jī)會(huì),并在再版時(shí)盡力采用你們的意見,盡快提高本書的質(zhì)量。
作 者2010年2月
第1章 C++程序設(shè)計(jì)基礎(chǔ)
1.1 C++的發(fā)展和主要特點(diǎn)
1.1.1 C++的發(fā)展
1.1.2 C++的特點(diǎn)
1.2 第一個(gè)C++程序以及C++程序開發(fā)過程
1.2.1 第一個(gè)C++程序
1.2.2 C++程序開發(fā)過程
1.3 C++在非面向?qū)ο蠓矫娴某S眯绿匦?br>1.3.1 C++的輸入輸出
1.3.2 eonst定義常量
1.3.3 函數(shù)重載
1.3.4 有默認(rèn)參數(shù)的函數(shù)
1.3.5 變量的引用
1.3.6 動(dòng)態(tài)分配和釋放內(nèi)存的運(yùn)算符new和delete
1.3.7 布爾類型
1.4 程序陷阱
1.5 習(xí)題
第2章 類和對(duì)象
2.1 由結(jié)構(gòu)到類的發(fā)展
2.1.1 帶函數(shù)的結(jié)構(gòu)
2.1.2 用構(gòu)造函數(shù)初始化結(jié)構(gòu)的對(duì)象
2.1.3 從結(jié)構(gòu)到類的演化
2.2 面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)
2.2.1 對(duì)象
2.2.2 抽象和類
2.2.3 封裝
2.2.4 繼承
2.2.5 多態(tài)性
2.3 C++類的聲明與對(duì)象的定義
2.3.1 類的聲明
2.3.2 在類體外定義成員函數(shù)
2.3.3 定義對(duì)象的方法
2.3.4 對(duì)象成員的引用
……
第3章 模板
第4章 運(yùn)算符重載
第5章 繼承
第6章 多態(tài)性
第7章 輸入輸出流
第8章 C++的其他主題
附錄
參考文獻(xiàn)