C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第4版)
定 價:59.9 元
叢書名:高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系特色教材系列
本書是供已學(xué)過C語言的讀者學(xué)習(xí)C 面向?qū)ο蟪绦蛟O(shè)計(jì)的教材。C 是國內(nèi)外廣泛學(xué)習(xí)和使用的支持面向?qū)ο蟪绦蛟O(shè)計(jì)的現(xiàn)代計(jì)算機(jī)高級語言,國內(nèi)許多高校已陸續(xù)開設(shè)了C 程序設(shè)計(jì)課程。但是,由于C 涉及的概念很多,語法比較復(fù)雜,內(nèi)容十分廣泛,不少人感到學(xué)習(xí)難度很大,難以入門。針對這種情況,作者深入研究了C 的內(nèi)容和初學(xué)者的認(rèn)知規(guī)律,專門為已學(xué)習(xí)過C語言的讀者構(gòu)建了便于學(xué)習(xí)的教材體系,編寫了這本C 面向?qū)ο蟪绦蛟O(shè)計(jì)入門教材。本書對面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念和C 語言的基本內(nèi)容作了全面、通俗而詳盡的說明,并且把這兩方面有機(jī)地結(jié)合起來。第1章介紹在面向過程程序設(shè)計(jì)領(lǐng)域中C 對C的擴(kuò)充,第2章初步介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的基本知識,第3~8章由淺入深地介紹怎樣利用C 編寫程序,在此過程中自然地介紹了面向?qū)ο蟪绦蛟O(shè)計(jì)方法的應(yīng)用。本書內(nèi)容全面,概念清晰,例題豐富,通俗易懂,易于學(xué)習(xí),可作為大學(xué)各專業(yè)學(xué)習(xí)C 面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)教材,也適于C 的初學(xué)者自學(xué)。即使沒有教師講授,讀者也基本能看懂本書的大部分內(nèi)容。本書配有兩本輔導(dǎo)教材:《C 面向?qū)ο蟪绦蛟O(shè)計(jì)(第4版)學(xué)習(xí)輔導(dǎo)》和《C 程序設(shè)計(jì)實(shí)踐指導(dǎo)》,供教學(xué)參考。
本書為普通高等教育十一五國家級規(guī)劃教材,獲全國高校出版社優(yōu)秀暢銷書一等獎。本書內(nèi)容全面,概念清晰,例題豐富,通俗易懂,深入淺出,易于學(xué)習(xí),可作為大學(xué)各專業(yè)學(xué)習(xí)C 面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)教材,也適于C 的初學(xué)者自學(xué)。本書內(nèi)容包括面向?qū)ο蟪绦蛟O(shè)計(jì)的基本理論概念和C 語言的基本內(nèi)容,并且把這兩方面有機(jī)地結(jié)合起來。第一章介紹面向過程程序設(shè)計(jì)領(lǐng)域中C 對C的擴(kuò)充,第二章簡要而通俗清晰地介紹了面向?qū)ο蟪绦蛟O(shè)計(jì)的基本知識,在后續(xù)各章中由淺入深地介紹怎樣編寫C 程序,在這過程中自然地具體地介紹了面向?qū)ο蟪绦蛟O(shè)計(jì)方法的應(yīng)用。
本書是一本介紹C 面向?qū)ο蟪绦蛟O(shè)計(jì)的入門基礎(chǔ)教材。目前的主流計(jì)算機(jī)的指令執(zhí)行是過程導(dǎo)向的,每個步驟(計(jì)算機(jī)指令)是依次執(zhí)行的。因此早期的編程語言也是面向過程的,設(shè)計(jì)者必須充分地考慮程序的每個細(xì)節(jié),要指定程序在每一環(huán)節(jié)應(yīng)執(zhí)行的動作。C語言是面向過程的結(jié)構(gòu)化和模塊化的語言,C語言是編寫UNIX操作系統(tǒng)的語言,功能強(qiáng)大,使用靈活。它在處理小型問題時得心應(yīng)手,但在處理大型復(fù)雜問題時就顯得力不從心了,F(xiàn)代計(jì)算機(jī)應(yīng)用已經(jīng)遠(yuǎn)遠(yuǎn)超出了科學(xué)計(jì)算和控制計(jì)算機(jī)操作的層面,而是更多地去解決各種各樣現(xiàn)實(shí)生活與工作中的復(fù)雜問題,如模擬氣象現(xiàn)象,制作文字、圖形、視頻作品等。為了處理復(fù)雜應(yīng)用程序,計(jì)算機(jī)科學(xué)家提出了面向?qū)ο蟪绦蛟O(shè)計(jì)的理論,并于20世紀(jì)末期在C語言的基礎(chǔ)上推出支持面向?qū)ο蟮腃 語言,為處理復(fù)雜應(yīng)用程序提供了有力的工具。近年來,國內(nèi)許多大學(xué)的計(jì)算機(jī)類專業(yè)都開設(shè)了C 程序設(shè)計(jì)課程,一些大學(xué)的非計(jì)算機(jī)專業(yè)也開設(shè)了C 面向?qū)ο蟪绦蛟O(shè)計(jì)課程,許多學(xué)過C語言程序設(shè)計(jì)的人也想了解和學(xué)習(xí)C 和面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)知識。但是,由于C 涉及概念很多,語法比較復(fù)雜,內(nèi)容十分廣泛,使不少人感到學(xué)習(xí)難度較大,難以入門。應(yīng)讀者的要求,作者在十多年前編著了《C 程序設(shè)計(jì)》一書,由清華大學(xué)出版社出版并向全國發(fā)行。該書以未學(xué)過C語言的讀者為對象,從面向過程入手介紹程序設(shè)計(jì)的基本知識和方法,然后介紹用C 進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。由于內(nèi)容全面,概念清晰,通俗易懂,該書出版后,受到各校師生的歡迎和好評。目前在大學(xué)理工類專業(yè),普遍開設(shè)了C語言程序設(shè)計(jì)的課程,許多學(xué)生在學(xué)習(xí)C語言后希望對C 面向?qū)ο蟪绦蛟O(shè)計(jì)有所了解,以便日后在需要時能較快地進(jìn)入該領(lǐng)域。很多師生希望我能編寫一本以C語言為起點(diǎn)的C 教材。為此,幾年前我在清華大學(xué)出版社出版了《C 面向?qū)ο蟪绦蛟O(shè)計(jì)》一書。該書是在《C 程序設(shè)計(jì)》一書的基礎(chǔ)上編寫而成的,已學(xué)習(xí)過C語言程序設(shè)計(jì)的讀者,不必再重新學(xué)習(xí)面向過程程序設(shè)計(jì)的部分,而可以直接從面向?qū)ο蟪绦蛟O(shè)計(jì)入手。作者將《C 程序設(shè)計(jì)》一書中介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的內(nèi)容抽出來改寫后單獨(dú)成書,并且重新寫了第1章從C到C ,介紹C 面向?qū)ο蟪绦蛟O(shè)計(jì)的初步知識以及C 對C語言在面向過程程序設(shè)計(jì)方面的擴(kuò)展,為以后各章的學(xué)習(xí)打下基礎(chǔ)。這樣的安排使內(nèi)容更集中,篇幅更緊湊。該書仍然保持了通俗易懂、貼近讀者、容易入門的特點(diǎn)。希望有助于大學(xué)生學(xué)習(xí)C 課程,初步掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。幾年前,作者曾對該書進(jìn)行過修訂,出版了《C 面向?qū)ο蟪绦蛟O(shè)計(jì)》(第3版),最近根據(jù)教學(xué)實(shí)踐的情況,又進(jìn)行一次全面的修訂。這次修訂,在保留原書內(nèi)容全面、概念清晰的優(yōu)點(diǎn)的基礎(chǔ)上,從章節(jié)標(biāo)題到正文都進(jìn)行了不少修改和補(bǔ)充,使之更加通俗易懂,容易學(xué)習(xí),F(xiàn)在出版《C 面向?qū)ο蟪绦蛟O(shè)計(jì)》(第4版),即本書。在此,對本書的指導(dǎo)思想作以下的說明。1. 教材要準(zhǔn)確定位首先要明確教材是為什么人寫的,他們學(xué)習(xí)C 的目的是什么,要學(xué)到什么程度,不能無的放矢。推出C 的初衷是解決大型復(fù)雜應(yīng)用軟件開發(fā)中遇到的問題,提高軟件的開發(fā)效率。只有參加過研制相對大型軟件的人才會真正體驗(yàn)到C 的優(yōu)越性。應(yīng)當(dāng)說明,本書的主要對象不是C 的專業(yè)開發(fā)人員,而是高校各專業(yè)的大學(xué)生和自學(xué)現(xiàn)代編程語言的讀者,本書不是程序員培訓(xùn)班教材。本書的讀者一般并無實(shí)際程序開發(fā)的經(jīng)驗(yàn),將來多數(shù)人也不一定成為專業(yè)的編程人員。不可奢望,通過幾十小時的學(xué)習(xí),就能使一個沒有C 程序設(shè)計(jì)基礎(chǔ)的初學(xué)者變成一個熟練的C 開發(fā)人員。應(yīng)當(dāng)有實(shí)事求是的分析和估計(jì)。本書的定位是入門與基礎(chǔ)。用有效的方法使讀者順利入門,通過學(xué)習(xí),打好基礎(chǔ)。通過學(xué)習(xí)本書,多數(shù)讀者會有以下收獲:①清晰地了解面向?qū)ο蟪绦蛟O(shè)計(jì)的方法以及C 的主要功能與特點(diǎn);②能夠用C 編寫簡單的面向?qū)ο蟮某绦;③能看懂別人編寫的規(guī)模比較小的C 程序; ④奠定進(jìn)一步學(xué)習(xí)和應(yīng)用的良好基礎(chǔ)。也就是從不知到初知,從不會到初會。入了門,有了良好的基礎(chǔ),以后提高和應(yīng)用就不困難了。2. 要設(shè)計(jì)合適的教材體系,合理取舍內(nèi)容學(xué)習(xí)C 面向?qū)ο蟪绦蛟O(shè)計(jì),應(yīng)當(dāng)對面向?qū)ο蟮姆椒ê虲 的基本特點(diǎn)有基本的了解。C 面向?qū)ο蟪绦蛟O(shè)計(jì)涉及面向?qū)ο蟪绦蛟O(shè)計(jì)的理論和C 語言的語法兩方面,都很重要。本書主要介紹C 處理問題的面向?qū)ο蟮乃季S方式和C 語言的基本內(nèi)容。我們不是抽象地介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的理論,也不是枯燥地介紹C 的語法,而是以程序設(shè)計(jì)為中心把這兩方面有機(jī)地結(jié)合起來。在介紹用C 語言編程的過程中,自然而然地引出面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念,通過C 編程過程理解面向?qū)ο蟪绦蛟O(shè)計(jì)方法,二者緊密結(jié)合,相得益彰。本書內(nèi)容系統(tǒng)而全面。面向?qū)ο蟪绦蛟O(shè)計(jì)有4個主要特點(diǎn):抽象、封裝、繼承和多態(tài)性,在C 語言中都有相應(yīng)的機(jī)制來實(shí)現(xiàn)它們。作為教材,不能忽略C 的主要內(nèi)容,本書的內(nèi)容全面涵蓋了以上4方面,提供了詳細(xì)而通俗的介紹和編程舉例。我們努力使讀者通過較短時間的學(xué)習(xí),能對面向?qū)ο蠓椒ê虲 有基本和全面的了解,而不是陷于煩瑣的細(xì)節(jié)之中。教材不同于使用手冊。手冊的任務(wù)是提供無所不包的使用細(xì)節(jié)以備查詢,而教材的任務(wù)是用容易理解的方法講清楚有關(guān)的基本概念和基本方法。不能把教材寫成包羅萬象的手冊,否則將會使篇幅過大,而且會沖淡重點(diǎn),主次不分,使讀者感到枯燥無味。本書的做法是:從應(yīng)用出發(fā),對編程所用到的最基本內(nèi)容和注意的問題都作了詳細(xì)的說明,但是并不羅列C 語法中過多的細(xì)節(jié),需要時把一些細(xì)節(jié)列出成表,供用時查閱。希望讀者在學(xué)習(xí)時多理解,勿死記,以把主要精力放在基本概念和基本方法上。要深入了解和掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的概念和方法,是一個學(xué)習(xí)實(shí)踐再學(xué)習(xí)再實(shí)踐的過程,不可能一蹴而就。在初學(xué)階段,要引導(dǎo)讀者初步理解面向?qū)ο蟮母拍,并由簡到繁地學(xué)會編寫C 程序。奠定了C 編程的初步基礎(chǔ),以后再進(jìn)一步提高。這樣的方法可能符合大多數(shù)學(xué)習(xí)者的情況,降低了學(xué)習(xí)難度。3. 概念清晰,深入淺出,化難難點(diǎn),容易學(xué)習(xí)C 不容易學(xué),也不容易教。作者在寫作過程中花了很大的精力考慮怎樣使讀者接受和理解。作者一貫認(rèn)為:教材編著者應(yīng)當(dāng)與讀者將心比心,換位思考,要站在讀者的角度思考和提出問題,幫助他們解除學(xué)習(xí)中的困難。要善于把復(fù)雜的問題簡單化,而不應(yīng)當(dāng)把簡單的問題復(fù)雜化,要善于化解難點(diǎn),深入淺出。作者著力使讀者對于面向?qū)ο蟮姆椒ê虲 的特點(diǎn)有清晰、準(zhǔn)確和全面的認(rèn)識。有一些面向?qū)ο蟮母拍,名詞很抽象,理論很難懂,有的初學(xué)者會被唬住,感到高深莫測。作者用通俗易懂的方法和語言敘述清楚復(fù)雜的概念,化解學(xué)習(xí)中的困難。讀者可以看到,在本書中,幾乎對每一個新出現(xiàn)的概念,都會用日常生活中的例子加以通俗地說明,一看就懂,很容易理解和入門。希望讀者不要被一大堆高深莫測的名詞術(shù)語嚇住,有些問題看起來很深奧,其實(shí)換一個角度去解釋就很容易理解,一個通俗的例子就把問題說清楚了。C 的名詞術(shù)語很多,一般C 的教材的章節(jié)標(biāo)題都是一些陌生的、深奧莫測的專業(yè)詞匯,往往使人摸不著頭腦,不知道要學(xué)的是什么,難以引發(fā)學(xué)習(xí)的興趣和欲望。作者經(jīng)過反復(fù)思考,改變了標(biāo)題的寫法,不是簡單地列出一個名詞術(shù)語,而是著重說明它是解決什么問題的。例如,原來有一節(jié)的標(biāo)題是帶參的構(gòu)造函數(shù),這次作者把它改為用帶參的構(gòu)造函數(shù)對不同對象進(jìn)行初始化,讀者從標(biāo)題就可以知道帶參的構(gòu)造函數(shù)是為了對象初始化的,從前一節(jié)到下一節(jié),前后連貫,承上啟下,讀者就會想看看究竟是怎樣處理的。又如,有一節(jié)的標(biāo)題是友元,讀者第一次聽到這個術(shù)語,往往不知所云,這次作者把標(biāo)題改為可以訪問私有數(shù)據(jù)的朋友,通俗易懂,具有目的性和啟發(fā)性,使讀者想去了解和學(xué)習(xí)。學(xué)習(xí)的過程不應(yīng)該是教師講什么,學(xué)生學(xué)什么的被動式學(xué)習(xí),應(yīng)當(dāng)形成學(xué)生主動思考問題、主動學(xué)習(xí)的局面。在各章的敘述中,本書不是先給出一個新概念或新術(shù)語,再去解釋它,而是先提出需要解決的問題,然后討論用什么方法去處理它,從而引出新的概念和新的方法。傳統(tǒng)的教學(xué)三部曲是:提出概念解釋概念舉例說明,作者在多年的計(jì)算機(jī)教學(xué)實(shí)踐中,采用了新的教學(xué)三部曲:提出問題分析和解決問題歸納分析。 在引入每個程序時,都按照以下幾個步驟展開:提出問題編寫程序運(yùn)行結(jié)果程序分析。由淺入深,逐步展開。不是先理論后實(shí)際,先抽象后具體,先一般后個別,而是從具體到抽象,從實(shí)際到理論,從個別到一般,從零散到系統(tǒng)。這樣做,符合初學(xué)者的認(rèn)知規(guī)律。4. 教學(xué)過程要采取容易入門,逐步提高的方法(1) 精心選擇例子。教材中的例題是基礎(chǔ)性質(zhì)的,是為了幫助讀者更好地理解某一方面的教學(xué)內(nèi)容而專門編寫的,相對簡單,容易理解。作者認(rèn)為,在初學(xué)階段的例題不宜太復(fù)雜,更不宜把一些比較復(fù)雜的實(shí)際應(yīng)用的程序直接搬到課堂當(dāng)作例題。一個實(shí)用的C 程序需要考慮許多因素,綜合各部分知識,有許多注釋行,而且一般是多文件的程序包,讀懂這類大型程序往往需要一定的經(jīng)驗(yàn)。作為教學(xué)程序要對問題進(jìn)行簡化,盡量壓縮不必要的語句。本書中的例題的選擇原則是:①通過例題能更深入地理解有關(guān)的概念和編程方法。②篇幅一般不太長,絕大多數(shù)讀者能獨(dú)立讀懂程序。③通過程序舉例使讀者掌握編程的方法和技巧。(2) 在初步掌握C 編程方法后,后續(xù)階段學(xué)習(xí)的例題程序會逐漸復(fù)雜一些。各章例題的難度是循序漸進(jìn)的,每一個臺階都不大,讀者能在原來的基礎(chǔ)上逐步提高。(3) C 面向?qū)ο蟪绦蛟O(shè)計(jì)的概念較多,語法復(fù)雜。有的讀者往往把精力放在弄清楚一個個具體問題上,而在學(xué)完一章后對全章的內(nèi)容缺乏整體的概念。建議讀者對于教材每一章的內(nèi)容至少認(rèn)真讀兩遍,第一遍弄清楚各個部分的內(nèi)容,不留死角。然后在學(xué)完全章后再從頭到尾認(rèn)真看一遍,把各個知識點(diǎn)串成一條線,建立一個整體的概念,知道本章講了什么,重點(diǎn)在哪里,難點(diǎn)在哪里,在編程中怎樣使用它們。在開始學(xué)習(xí)時是化整為零,各個擊破,然后再化零為整,形成整體的認(rèn)識。這樣做的讀者都會有很大收獲。(4) 不要滿足于能看懂例題程序,而應(yīng)當(dāng)在學(xué)完每一章后自己獨(dú)立編寫比例題難度大一點(diǎn)的程序。在各章最后的習(xí)題中,有些題的難度比教材中的例題稍大一些,希望教師能從中選擇一些指定學(xué)生完成,并通過上機(jī)實(shí)踐,進(jìn)一步掌握C 的調(diào)試與運(yùn)行的方法。(5) 在學(xué)完本教材各章后,最好學(xué)習(xí)一些綜合的程序?qū)嵗,以鞏固收獲,提高編程能力。本書的參考用書《C 程序設(shè)計(jì)實(shí)踐指導(dǎo)》,提供了約50個實(shí)用或接近實(shí)用的程序,教師可以從中選擇一些在課堂講授,或者指定學(xué)生自己閱讀參考。(6) 本書便于自學(xué),即使沒有老師講解,讀者也能看懂本書的大部分內(nèi)容。老師可以要求學(xué)生先自學(xué),然后在課堂上選擇重點(diǎn)內(nèi)容講授。有些語法中的具體的規(guī)定可以不必講授,由學(xué)生自學(xué)。5. C 教材應(yīng)當(dāng)體現(xiàn)C 標(biāo)準(zhǔn)C 是從C語言發(fā)展而來的。多數(shù)編譯器同時兼容C語言與C 。C 中有很多語法是繼承了C語言的(當(dāng)然也有不少改進(jìn))。熟悉C語言編程的人往往會沿用某些C語言的傳統(tǒng)用法,例如,頭文件帶后綴.h;使用系統(tǒng)庫時不使用命名空間;早期的C語言允許主函數(shù)為void類型、主函數(shù)可以無返回值等。但是,ANSI C 標(biāo)準(zhǔn)在一些方面有新的規(guī)定。例如,要求主函數(shù)為int類型,如果程序正常執(zhí)行,則返回0值;系統(tǒng)頭文件不帶后綴.h;使用系統(tǒng)庫時使用命名空間std;增加了字符串類型string等。雖然C 編譯器仍然允許使用從C語言繼承來的一些傳統(tǒng)用法,但作者認(rèn)為,作為教材,應(yīng)當(dāng)提倡C 的標(biāo)準(zhǔn)用法。引導(dǎo)讀者從一開始就按照C 標(biāo)準(zhǔn)編寫程序,養(yǎng)成C 的編程習(xí)慣和風(fēng)格。本書各章都是依據(jù)C 標(biāo)準(zhǔn)介紹的,同時也說明允許使用的C語言的傳統(tǒng)用法。在本書中,程序的形式大致如下:#include//頭文件不帶后綴.h#include//包含string頭文件,以便程序中使用字符串變量using namespace std;//使用系統(tǒng)庫時使用命名空間stdint main() //主函數(shù)為int類型{string str; //可以定義字符串變量str…return 0; //程序正常執(zhí)行則返回0}6. 提供配套的教學(xué)資源,滿足教學(xué)需要考慮不同學(xué)校、不同專業(yè)、不同讀者對學(xué)習(xí)C 有不同的要求,我們提供了配套的教學(xué)資源,供選用。除了主教材外,推薦使用以下兩本教學(xué)參考書:(1) 《C 面向?qū)ο蟪绦蛟O(shè)計(jì)(第4版)學(xué)習(xí)輔導(dǎo)》,譚浩強(qiáng)編著,清華大學(xué)出版社出版。該書提供主教材各章中的全部習(xí)題的解答。由于教材篇幅有限,有些很好的例子無法在教材中列出,因此把它們作為習(xí)題,希望讀者自己完成,教師也可以從中選擇一些習(xí)題作為例題講授。學(xué)生除了完成教師指定的習(xí)題外,最好把習(xí)題解答中的程序看一遍,以更好地理解C 程序,擴(kuò)大眼界,啟迪思路,豐富知識,增長能力。程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,只靠聽課和看書是學(xué)不好的。衡量學(xué)習(xí)好壞的標(biāo)準(zhǔn)不是懂不懂,而是會不會干。因此必須強(qiáng)調(diào)多編程,多上機(jī)實(shí)踐。在《C 面向?qū)ο蟪绦蛟O(shè)計(jì)(第4版)學(xué)習(xí)輔導(dǎo)》中,還介紹了運(yùn)行C 程序的方法。此外,書中還給出上機(jī)實(shí)踐任務(wù),要求學(xué)生完成若干上機(jī)實(shí)踐。(2) 《C 程序設(shè)計(jì)實(shí)踐指導(dǎo)》,陳清華、朱紅編著,清華大學(xué)出版社出版。該書提供了50多個具有實(shí)用價值的C 應(yīng)用程序。這是為學(xué)習(xí)教材后進(jìn)一步深入學(xué)習(xí)的讀者準(zhǔn)備的,目的是提高編程能力。該書內(nèi)容包括: 怎樣編寫C 應(yīng)用程序;提供若干不同規(guī)模的實(shí)際的C 應(yīng)用程序供分析閱讀;安排并指導(dǎo)學(xué)生完成1~2個C 應(yīng)用程序。經(jīng)過這樣的訓(xùn)練,學(xué)生的實(shí)際能力將會有較大的提高。此外,本書還提供教材中全部例題的源程序,以便于教師上機(jī)和講授,也便于學(xué)生在此基礎(chǔ)上調(diào)試和修改程序,需要者可在清華大學(xué)出版社官網(wǎng)下載。同時,還向使用本書的教師免費(fèi)提供講課的電子演示文稿(PPT的素材),以節(jié)省教師的備課時間。本書由譚浩強(qiáng)教授編寫,譚亦峰也參加了部分編寫工作。全國高等院校計(jì)算機(jī)基礎(chǔ)教育研究會和浩強(qiáng)工作室的各位專家以及全國各高校老師多年來對作者始終給予了熱情的支持和鼓勵。清華大學(xué)出版社對本書的出版十分重視并作了周到的安排,使本書得以在短時間內(nèi)出版。對于曾經(jīng)鼓勵、支持和幫助過我的朋友,謹(jǐn)表示真摯的謝意。本書肯定會有不妥之處,誠盼專家和廣大讀者不吝指正。
謹(jǐn)識2023年9月于清華園
第1章C11.1從C到C 11.2最簡單的C 程序21.3C 對C的擴(kuò)充81.3.1C 的輸入輸出81.3.2用const定義常變量111.3.3函數(shù)原型聲明111.3.4函數(shù)的重載121.3.5函數(shù)模板141.3.6有默認(rèn)參數(shù)的函數(shù)161.3.7變量的引用171.3.8內(nèi)置函數(shù)241.3.9作用域運(yùn)算符251.3.10字符串變量261.3.11動態(tài)分配/撤銷內(nèi)存的運(yùn)算符new和delete291.3.12C 對C功能擴(kuò)展的小結(jié)311.4C 程序的編寫和實(shí)現(xiàn)311.5關(guān)于C 上機(jī)實(shí)踐33習(xí)題33第2章類和對象的特性372.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述372.1.1什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)372.1.2面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)412.1.3類和對象的作用422.1.4面向?qū)ο蟮能浖_發(fā)432.2類的聲明和對象的定義442.2.1類和對象的關(guān)系442.2.2聲明類的類型452.2.3定義對象的方法472.2.4類和結(jié)構(gòu)體類型的異同482.3類的成員函數(shù)492.3.1成員函數(shù)的性質(zhì)492.3.2在類外定義成員函數(shù)502.3.3內(nèi)置成員函數(shù)(inline成員函數(shù))512.3.4成員函數(shù)的存儲方式522.4怎樣訪問對象的成員542.4.1通過對象名和成員運(yùn)算符訪問對象中的成員542.4.2通過指向?qū)ο蟮闹羔樤L問對象中的成員552.4.3通過對象的引用來訪問對象中的成員552.5類和對象的簡單應(yīng)用舉例552.6類的封裝性和信息隱蔽642.6.1公用接口與私有實(shí)現(xiàn)的分離642.6.2類聲明和成員函數(shù)定義的分離652.6.3面向?qū)ο蟪绦蛟O(shè)計(jì)中的幾個名詞68習(xí)題68第3章怎樣使用類和對象713.1類對象的初始化713.1.1需要對類對象進(jìn)行初始化713.1.2用構(gòu)造函數(shù)實(shí)現(xiàn)數(shù)據(jù)成員的初始化723.1.3用帶參數(shù)的構(gòu)造函數(shù)對不同對象初始化743.1.4在構(gòu)造函數(shù)中用參數(shù)初始化表對數(shù)據(jù)成員初始化763.1.5可以對構(gòu)造函數(shù)進(jìn)行重載773.1.6構(gòu)造函數(shù)可以使用默認(rèn)參數(shù)793.1.7用構(gòu)造函數(shù)實(shí)現(xiàn)初始化方法的歸納823.1.8利用析構(gòu)函數(shù)進(jìn)行清理工作833.1.9調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的順序853.2對象數(shù)組873.3對象指針893.3.1指向?qū)ο蟮闹羔?93.3.2指向?qū)ο蟪蓡T的指針903.3.3指向當(dāng)前對象的this指針933.4共用數(shù)據(jù)的保護(hù)943.4.1定義常對象953.4.2定義常對象成員963.4.3指向?qū)ο蟮某V羔?73.4.4指向常對象的指針變量983.4.5對象的常引用1013.4.6const型數(shù)據(jù)的小結(jié)1023.5對象的動態(tài)建立和釋放1023.6對象的賦值和復(fù)制1043.6.1對象的賦值1043.6.2對象的復(fù)制1053.7不同對象間實(shí)現(xiàn)數(shù)據(jù)共享1083.7.1把數(shù)據(jù)成員定義為靜態(tài)1083.7.2用靜態(tài)成員函數(shù)訪問靜態(tài)數(shù)據(jù)成員1103.8允許訪問私有數(shù)據(jù)的朋友1133.8.1可以訪問私有數(shù)據(jù)的友元函數(shù)1133.8.2可以訪問私有數(shù)據(jù)的友元類1173.9類模板118習(xí)題122第4章對運(yùn)算符進(jìn)行重載1264.1為什么要對運(yùn)算符重載1264.2對運(yùn)算符重載的方法1284.3重載運(yùn)算符的規(guī)則1314.4運(yùn)算符重載函數(shù)作為類成員函數(shù)和友元函數(shù)1334.5重載雙目運(yùn)算符1364.6重載單目運(yùn)算符1414.7重載流插入運(yùn)算符和流提取運(yùn)算符1434.7.1重載流插入運(yùn)算符<<1444.7.2重載流提取運(yùn)算符>>1464.8有關(guān)運(yùn)算符重載的歸納1484.9不同類型數(shù)據(jù)間的轉(zhuǎn)換1494.9.1標(biāo)準(zhǔn)類型數(shù)據(jù)間的轉(zhuǎn)換1494.9.2把其他類型數(shù)據(jù)轉(zhuǎn)換為類對象用轉(zhuǎn)換構(gòu)造函數(shù)1504.9.3將類對象轉(zhuǎn)換為其他類型數(shù)據(jù)用類型轉(zhuǎn)換函數(shù)151習(xí)題157第5章類的繼承1585.1繼承與派生1585.2派生類的聲明方式1615.3派生類的構(gòu)成1615.4派生類成員的訪問屬性1635.4.1公用繼承1645.4.2私有繼承1665.4.3保護(hù)成員和保護(hù)繼承1695.4.4多級派生時的訪問屬性1735.5派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)1745.5.1簡單的派生類的構(gòu)造函數(shù)1755.5.2有子對象的派生類的構(gòu)造函數(shù)1785.5.3多層派生時的構(gòu)造函數(shù)1815.5.4派生類構(gòu)造函數(shù)的特殊形式1835.5.5派生類的析構(gòu)函數(shù)1845.6多重繼承1845.6.1聲明多重繼承的方法1855.6.2多重繼承派生類的構(gòu)造函數(shù)1855.6.3多重繼承引起的二義性問題1885.6.4在繼承間接共同基類時減少數(shù)據(jù)冗余用虛基類1915.7基類與派生類的轉(zhuǎn)換1965.8繼承與組合1995.9繼承在軟件開發(fā)中的重要意義201習(xí)題202第6章C 的多態(tài)性2076.1什么是多態(tài)性2076.2一個典型的例子2086.3利用虛函數(shù)實(shí)現(xiàn)動態(tài)多態(tài)性2146.3.1虛函數(shù)的作用2146.3.2靜態(tài)關(guān)聯(lián)與動態(tài)關(guān)聯(lián)2186.3.3在什么情況下應(yīng)當(dāng)聲明虛函數(shù)2196.3.4虛析構(gòu)函數(shù)2206.4純虛函數(shù)與抽象類2216.4.1沒有函數(shù)體的純虛函數(shù)2216.4.2不能用來定義對象的類抽象類2226.4.3應(yīng)用實(shí)例223習(xí)題229第7章輸入輸出流2307.1C 的輸入和輸出2307.1.1輸入輸出的含義2307.1.2C 的I/O對C的發(fā)展類型安全和可擴(kuò)展性2307.1.3C 的輸入輸出流2317.2標(biāo)準(zhǔn)輸出流2367.2.1cout,cerr和clog流2367.2.2標(biāo)準(zhǔn)類型數(shù)據(jù)的格式輸出2387.2.3用流成員函數(shù)put輸出字符2437.3標(biāo)準(zhǔn)輸入流2447.3.1cin流2447.3.2用于字符輸入的流成員函數(shù)2467.3.3istream類的其他成員函數(shù)2507.4對數(shù)據(jù)文件的操作與文件流2537.4.1文件的概念2537.4.2文件流類與文件流對象2557.4.3文件的打開與關(guān)閉2557.4.4對ASCII文件的操作2587.4.5對二進(jìn)制文件的操作2637.5字符串流268習(xí)題273第8章善于使用C2748.1對出現(xiàn)異常情況的處理2748.1.1異常處理的任務(wù)2748.1.2異常處理的方法2758.1.3在函數(shù)聲明中進(jìn)行異常情況指定2828.1.4在異常處理中處理析構(gòu)函數(shù)2838.2用命名空間避免同名沖突2858.2.1同名沖突2858.2.2什么是命名空間2888.2.3使用命名空間解決名字沖突2908.2.4使用命名空間中的成員的方法2928.2.5使用無名的命名空間2948.2.6使用標(biāo)準(zhǔn)命名空間std2958.3使用早期的函數(shù)庫296習(xí)題297附錄A常用字符與ASCII碼對照表299附錄B運(yùn)算符與結(jié)合性300參考文獻(xiàn)302