本書(shū)是為已學(xué)過(guò)C語(yǔ)言程序設(shè)計(jì)、具有程序設(shè)計(jì)初步知識(shí)的讀者編寫(xiě)的,是與作者編著的《C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》(清華大學(xué)出版社出版) 一書(shū)配套使用的輔助教材。關(guān)于《C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》一書(shū)的特點(diǎn)和編寫(xiě)此書(shū)的初衷,作者在《C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》的前言中作了比較詳細(xì)的說(shuō)明,建議讀者抽空再認(rèn)真閱讀一下,對(duì)于怎樣學(xué)好這門(mén)課是很有好處的。作者一貫認(rèn)為:教材不同于專(zhuān)著,不能認(rèn)為越深越好,越全越好,必須準(zhǔn)確定位,要認(rèn)真分析學(xué)習(xí)者的基礎(chǔ)和學(xué)習(xí)本門(mén)課程應(yīng)當(dāng)達(dá)到的基本要求,并根據(jù)教學(xué)要求合理取舍內(nèi)容。對(duì)于C++這樣公認(rèn)比較難學(xué)的課程尤為如此。
學(xué)習(xí)C++首先要了解和掌握C++的基本知識(shí),學(xué)會(huì)使用C++語(yǔ)言編寫(xiě)程序,在這個(gè)過(guò)程中了解有關(guān)面向?qū)ο蟪绦蛟O(shè)計(jì)方法和有關(guān)的基本概念,學(xué)習(xí)有關(guān)的算法。本書(shū)的習(xí)題就是圍繞這個(gè)目的而設(shè)計(jì)的。盡管C++是為了解決大型軟件開(kāi)發(fā)工作中的問(wèn)題而產(chǎn)生的,但是在學(xué)習(xí)時(shí)不可能一開(kāi)始就接觸甚至編寫(xiě)大程序,而必須從簡(jiǎn)單的小程序開(kāi)始,循序漸進(jìn),逐步深入。因此本書(shū)每一章的習(xí)題都是圍繞更好地理解該章所敘述的基本概念、基本語(yǔ)法的應(yīng)用以及有關(guān)的算法,只有把這些基礎(chǔ)打好了,才能為日后的進(jìn)一步學(xué)習(xí)和應(yīng)用創(chuàng)造良好的條件?紤]到多數(shù)讀者的學(xué)習(xí)基礎(chǔ),習(xí)題不要求具備較深入的數(shù)據(jù)結(jié)構(gòu)方面的知識(shí),所涉及的算法是讀者所能理解和接受的。
本書(shū)的內(nèi)容包括3個(gè)部分:
1.《C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》習(xí)題與參考解答。這些習(xí)題都是和教材內(nèi)容緊密結(jié)合的。大部分習(xí)題是多數(shù)讀者在學(xué)習(xí)教材后能夠獨(dú)立完成的,有一些習(xí)題是對(duì)教材內(nèi)容的擴(kuò)展,需要補(bǔ)充一些知識(shí)。由于教材篇幅有限,有些很好的例子無(wú)法在教材中列出,現(xiàn)把它們作為習(xí)題,希望讀者自己完成,教師也可以從中選擇一些習(xí)題作為例題講授。學(xué)生除了完成教師指定的習(xí)題外,最好把習(xí)題解答中的程序全部看一遍,以更好地理解C++程序,拓寬眼界,啟迪思路,豐富知識(shí),增長(zhǎng)能力。
為了幫助讀者更好地理解程序,對(duì)于稍難的習(xí)題,書(shū)中都作了比較詳細(xì)的說(shuō)明,或在程序中加了注釋。實(shí)際上,這部分是一個(gè)例題匯編,提供了不同類(lèi)型的題目和程序,對(duì)有的題目提供了幾種不同的解法和程序,供讀者比較分析。希望讀者充分利用這些 資源。
應(yīng)當(dāng)說(shuō)明:本書(shū)中提供的只是參考答案,并不一定是唯一的答案,甚至不一定是最好的答案,讀者完全可以舉一反三,編寫(xiě)出更好的程序。
2. C++的上機(jī)操作。在這部分中介紹了在3種典型的環(huán)境下運(yùn)行C++程序的方法:①Visual Studio 2010;②在線(xiàn)編譯器;③GCC,GCC是自由軟件,不必購(gòu)買(mǎi)。GCC可以在Windows環(huán)境下使用,也可以在非Windows環(huán)境(如DOS,UNIX,Linux)下使用。
學(xué)習(xí)C++,不應(yīng)只局限于使用一種編譯環(huán)境,希望讀者能掌握一種以上的編譯和運(yùn)行C++程序的環(huán)境與工具。
3. 上機(jī)實(shí)驗(yàn)內(nèi)容與安排。在這部分中提出了上機(jī)實(shí)驗(yàn)的指導(dǎo)思想和上機(jī)實(shí)驗(yàn)的要求,并介紹了程序調(diào)試與測(cè)試的方法。在此基礎(chǔ)上,設(shè)計(jì)了9個(gè)實(shí)驗(yàn),大體上每一個(gè)實(shí)驗(yàn)對(duì)應(yīng)教材的一章。每個(gè)實(shí)驗(yàn)一般包括4~5個(gè)題目。這只是供教師安排實(shí)驗(yàn)時(shí)參考的。由于教材的每一章內(nèi)容的分量不同,其對(duì)應(yīng)的實(shí)驗(yàn)的分量也應(yīng)該有所不同。有的章內(nèi)容較多,可能需要對(duì)應(yīng)兩次實(shí)驗(yàn)。不同的學(xué)校、不同的專(zhuān)業(yè)、不同程度的班級(jí),所進(jìn)行的實(shí)驗(yàn)的內(nèi)容和分量會(huì)有所不同。除了書(shū)中指定的實(shí)驗(yàn)內(nèi)容外,教師也可以根據(jù)教學(xué)需要指定其他實(shí)驗(yàn)內(nèi)容。這需要任課教師根據(jù)實(shí)際情況進(jìn)行調(diào)整。
在指定實(shí)驗(yàn)內(nèi)容時(shí),采取的原則是:習(xí)題與實(shí)驗(yàn)內(nèi)容一致,即教師指定學(xué)生完成的作業(yè),不僅要求學(xué)生在紙上寫(xiě)出程序或結(jié)果,而且要求學(xué)生上機(jī)調(diào)試與運(yùn)行。在實(shí)驗(yàn)中不能滿(mǎn)足于能得到正確運(yùn)行結(jié)果,還應(yīng)當(dāng)進(jìn)行分析和討論。本書(shū)在習(xí)題的基礎(chǔ)上會(huì)提出一些思考問(wèn)題,或改變一些條件,要求學(xué)習(xí)者修改程序,分析對(duì)比運(yùn)行結(jié)果。
在完成本書(shū)習(xí)題和實(shí)驗(yàn)的基礎(chǔ)上,如果讀者希望進(jìn)一步學(xué)習(xí)C++編程技術(shù),可以參考由作者主編,陳清華、朱紅編著,清華大學(xué)出版社出版的《C++程序設(shè)計(jì)實(shí)踐指導(dǎo)》。
本書(shū)的教學(xué)資源可在清華大學(xué)出版社網(wǎng)站下載,包括以下內(nèi)容:
。1)《C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》一書(shū)中的全部例題程序。文件名以c開(kāi) 頭,與例題號(hào)一一對(duì)應(yīng),如c5-4.cpp是第5章例5.4程序。
(2)本書(shū)第1部分中各章習(xí)題解答的程序。文件名以xt開(kāi)頭,與例題號(hào)一一對(duì)應(yīng),如xt7-3.cpp是第7章習(xí)題3的程序。
本書(shū)主要由譚浩強(qiáng)教授編寫(xiě),譚亦峰工程師和薛淑斌高級(jí)工程師參加了部分內(nèi)容的編寫(xiě)工作。本書(shū)若有不足之處,敬請(qǐng)讀者不吝指正。
謹(jǐn)識(shí)
2020年8月于清華園
第1部分
第1章 C++?的初步知識(shí) 3
第2章 類(lèi)和對(duì)象的特性 18
第3章 怎樣使用類(lèi)和對(duì)象 27
第4章 對(duì)運(yùn)算符進(jìn)行重載 42
第5章 繼承與派生 55
第6章 多態(tài)性與虛函數(shù) 75
第7章 輸入輸出流 86
第8章 C++?工具 98
第2部分 C++的上機(jī)操作
第9章 用Visual Studio 2010運(yùn)行C++?程序 107
9.1 Visual Studio 2010簡(jiǎn)介 107
9.2 建立新項(xiàng)目 108
9.3 建立文件 111
9.4 進(jìn)行編譯 115
9.5 運(yùn)行程序 116
9.6 打開(kāi)一個(gè)已有的C++?文件 117
9.7 編輯和運(yùn)行一個(gè)包含多文件的程序 119
9.8 關(guān)于用Visual Studio 2010運(yùn)行C++?程序的說(shuō)明 121
第10章 用在線(xiàn)編譯器運(yùn)行C++?程序 123
第11章 用GCC運(yùn)行C++?程序 127
11.1 GCC簡(jiǎn)介 127
11.2 本書(shū)為讀者定制的簡(jiǎn)單易用的GCC環(huán)境 128
11.3 簡(jiǎn)易編輯、編譯和運(yùn)行C++?程序 129
11.4 直接用Linux環(huán)境和GCC編輯、編譯和運(yùn)行C++?程序 132
11.4.1 怎樣在Linux環(huán)境里編輯、運(yùn)行C++?程序 132
11.4.2 用makefile控制編譯過(guò)程 135
11.5 本Linux GCC練習(xí)環(huán)境的文件管理 137
11.5.1 上傳一個(gè)文件進(jìn)Linux虛擬機(jī) 137
11.5.2 保存虛擬機(jī)的主目錄 139
11.5.3 把下載的打包上傳回虛擬機(jī) 140
第3部分 上機(jī)實(shí)驗(yàn)內(nèi)容與安排
第12章 實(shí)驗(yàn)指導(dǎo) 145
12.1 上機(jī)實(shí)驗(yàn)的指導(dǎo)思想和要求 145
12.2 關(guān)于程序的調(diào)試和測(cè)試 147
第13章 實(shí)驗(yàn)內(nèi)容與安排 152
13.1 實(shí)驗(yàn)1 C++程序的運(yùn)行環(huán)境和運(yùn)行C++程序的方法 152
13.2 實(shí)驗(yàn)2 C++對(duì)C的擴(kuò)充 154
13.3 實(shí)驗(yàn)3 類(lèi)和對(duì)象(一) 155
13.4 實(shí)驗(yàn)4 類(lèi)和對(duì)象(二) 157
13.5 實(shí)驗(yàn)5 運(yùn)算符重載 160
13.6 實(shí)驗(yàn)6 繼承與派生 161
13.7 實(shí)驗(yàn)7 多態(tài)性與虛函數(shù) 162
13.8 實(shí)驗(yàn)8 輸入輸出流 163
13.9 實(shí)驗(yàn)9 C++工具 164
參考文獻(xiàn) 165