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