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