C++是近年來國內(nèi)外廣泛學(xué)習(xí)和使用的支持面向?qū)ο蟪绦蛟O(shè)計的現(xiàn)代計算機高級語言,國內(nèi)許多高校已陸續(xù)開設(shè)了C++程序設(shè)計課程。但是,由于C++涉及的概念很多,語法比較復(fù)雜,內(nèi)容十分廣泛,不少人感到學(xué)習(xí)難度很大,難以入門。針對這種情況,作者譚浩強深入研究了C++的內(nèi)容和初學(xué)者的認(rèn)知規(guī)律,專門為已學(xué)習(xí)過C語言的讀者構(gòu)建了便于學(xué)習(xí)的教材體系,編寫了這本C++面向?qū)ο蟪绦蛟O(shè)計入門教材。
《C++面向?qū)ο蟪绦蛟O(shè)計(第2版)/中國高等院校計算機基礎(chǔ)教育課程體系規(guī)劃教材》對面向?qū)ο蟪绦蛟O(shè)計的基本理論概念和C++語言的基本內(nèi)容作了通俗而詳盡的說明,并且把這兩方面有機地結(jié)合起來。第1章介紹面向過程程序設(shè)計領(lǐng)域中C++對C的擴充,第2章初步介紹面向?qū)ο蟪绦蛟O(shè)計的基本知識,在后續(xù)各章中由淺入深地介紹怎樣編寫C++程序,在此過程中自然地具體介紹了面向?qū)ο蟪绦蛟O(shè)計方法的應(yīng)用。
《C++面向?qū)ο蟪绦蛟O(shè)計(第2版)/中國高等院校計算機基礎(chǔ)教育課程體系規(guī)劃教材》內(nèi)容全面,概念清晰,例題豐富,通俗易懂,易于學(xué)習(xí),可作為大學(xué)各專業(yè)學(xué)習(xí)C++面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)教材,也適于C++的初學(xué)者自學(xué)。即使沒有教師講授,讀者也基本能看懂本書的大部分內(nèi)容。
前一時期,人們編寫的程序多是面向過程的,設(shè)計者必須充分地考慮到程序的每一個細(xì)節(jié),要指定程序在每一瞬時應(yīng)執(zhí)行的動作。C語言是面向過程的結(jié)構(gòu)化和模塊化的語言,用于處理小型問題時得心應(yīng)手,但在處理大型問題時就顯得力不從心了。為了處理大型程序的需要,計算機科學(xué)家提出了面向?qū)ο蟪绦蛟O(shè)計的理論,并于20世紀(jì)末期在C語言的基礎(chǔ)上研制出支持面向?qū)ο蟮腃++語言,為處理大程序提供了有力的工具。
近年來,國內(nèi)許多大學(xué)的計算機類專業(yè)都開設(shè)了C++程序設(shè)計課程,一些大學(xué)的非計算機專業(yè)也開設(shè)了C++面向?qū)ο蟪绦蛟O(shè)計課程,許多學(xué)過C語言程序設(shè)計的人也想了解和學(xué)習(xí)C++和面向?qū)ο蟪绦蛟O(shè)計的有關(guān)知識。但是,由于C++涉及概念很多,語法比較復(fù)雜,內(nèi)容十分廣泛,使不少人感到學(xué)習(xí)難度較大,難以入門。
在許多讀者的要求和鼓勵下,作者于2004年完成了《C++程序設(shè)計》一書的編寫工作,由清華大學(xué)出版社出版并向全國發(fā)行。該書以未學(xué)過C語言的讀者為對象,從面向過程入手介紹程序設(shè)計的基本知識和方法,然后介紹用C++進(jìn)行面向?qū)ο蟪绦蛟O(shè)計的方法。該書出版后,由于概念清晰,通俗易懂,受到師生們的歡迎和好評,幾年內(nèi)發(fā)行了30多萬冊。
目前在大學(xué)理工類專業(yè),普遍開設(shè)了C語言程序設(shè)計的課程,許多學(xué)生在學(xué)習(xí)C語言后希望對C++面向?qū)ο蟪绦蛟O(shè)計有所了解,以便日后在需要時能較快地進(jìn)入該領(lǐng)域。很多師生希望我能出版一本以C語言為起點的C++教材。
為此,2006年我在清華大學(xué)出版社出版了《C++面向?qū)ο蟪绦蛟O(shè)計》一書。該書是在《C++程序設(shè)計》一書的基礎(chǔ)上編寫而成的。考慮到本書的讀者已學(xué)習(xí)過C語言程序設(shè)計,因此不必再重新學(xué)習(xí)面向過程程序設(shè)計的部分,而直接從面向?qū)ο蟪绦蛟O(shè)計入手,將《C++程序設(shè)計》一書中介紹面向?qū)ο蟪绦蛟O(shè)計的內(nèi)容抽出來改寫后單獨成書,并且重新寫了第1章,介紹C++面向?qū)ο蟪绦蛟O(shè)計的初步知識以及C++對C在面向過程程序設(shè)計方面的改進(jìn)與增強,為以后各章的學(xué)習(xí)打下基礎(chǔ)。這樣的安排使本書內(nèi)容更集中,篇幅更緊湊。本書仍然保持了通俗易懂、貼近讀者、容易入門的特點。希望有助于大學(xué)生學(xué)習(xí)C++課程,初步掌握面向?qū)ο蟪绦蛟O(shè)計的方法。
經(jīng)過幾年的教學(xué)實踐后,作者現(xiàn)在對此書進(jìn)行修訂,出版了《C++面向?qū)ο蟪绦蛟O(shè)計(第2版)》,即本書。現(xiàn)對本書的指導(dǎo)思想作以下的說明。1. 教材應(yīng)當(dāng)準(zhǔn)確定位,合理取舍內(nèi)容
首先要弄清楚教材是為什么人寫的,他們學(xué)習(xí)C++的目的是什么,應(yīng)當(dāng)學(xué)到什么程度,不能無的放矢。應(yīng)當(dāng)聲明: 本書的對象不是C++的專業(yè)開發(fā)人員,而是高校各專業(yè)的大學(xué)生,他們并無從事程序設(shè)計的實際經(jīng)驗,將來也不一定是C++的專業(yè)開發(fā)人員。眾所周知,研制C++的初衷是為了解決大型軟件開發(fā)中遇到的問題,提高軟件的開發(fā)效率。只有參加過研制大型軟件的人才會真正體會到C++的優(yōu)越性,并善于利用C++的獨特機制去進(jìn)行軟件開發(fā)。
大學(xué)生在學(xué)校學(xué)習(xí)期間學(xué)習(xí)C++的目的是了解面向?qū)ο蟪绦蛟O(shè)計方法,能夠利用C++編寫相對簡單的程序,為以后進(jìn)一步學(xué)習(xí)和應(yīng)用打下良好的基礎(chǔ)。不可能設(shè)想,通過幾十小時的學(xué)習(xí),就能使一個沒有程序設(shè)計基礎(chǔ)的初學(xué)者變成一個熟練的C++開發(fā)人員。應(yīng)當(dāng)有一個實事求是的分析和估計。因此,本書著力于使讀者對C++的全貌和作用有基本的認(rèn)識,用容易理解的方法講清楚有關(guān)的基本概念和基本方法,而不去羅列C++語法中各種煩瑣的細(xì)節(jié);否則將會使篇幅過大(許多國外的書厚達(dá)近千頁),而且會沖淡重點,主次不分,使讀者感到枯燥無味。
2. 要設(shè)計合適的教材體系
C++程序設(shè)計牽涉面向?qū)ο蟪绦蛟O(shè)計的理論、C++語言的語法以及算法3個方面的內(nèi)容,其中每一方面都包含十分豐富的內(nèi)容,都可以分別單獨成書。顯然在一本教材中深入、詳細(xì)地介紹以上3個方面的知識是不可能的,必須把它們有機地結(jié)合起來,綜合應(yīng)用。不同的書對此采取不同的寫法,側(cè)重點有所不同,各有優(yōu)缺點,適合于不同的讀者,需要在教學(xué)實踐中檢驗,取長補短,不斷完善。
作者認(rèn)為,要進(jìn)行C++程序設(shè)計當(dāng)然需要了解面向?qū)ο蟪绦蛟O(shè)計的有關(guān)概念,但是本課程畢竟不是一門面向?qū)ο蟪绦蛟O(shè)計的理論課程,在本書中不是抽象地介紹面向?qū)ο蟪绦蛟O(shè)計的理論,而是在介紹C++語言的特點和應(yīng)用過程中,自然地引出面向?qū)ο蟪绦蛟O(shè)計的有關(guān)概念,通過C++的編程過程理解面向?qū)ο蟪绦蛟O(shè)計方法。在各章中結(jié)合例題介紹有關(guān)的算法,引導(dǎo)讀者思考怎樣構(gòu)造一個算法。
要用C++編寫程序,最基本的要求是正確掌握和運用C++。由于C++語法復(fù)雜,內(nèi)容又多,如果對它缺乏系統(tǒng)了解,將難以真正應(yīng)用,編寫出來的程序?qū)e誤百出,通不過編譯,事倍功半。本書的做法是全面而系統(tǒng)地介紹C++的主要特點和功能,引導(dǎo)讀者由簡到繁地學(xué)會編寫C++程序。有了C++編程的初步基礎(chǔ)后,再進(jìn)一步提高。這樣的方法可能符合大多數(shù)學(xué)習(xí)者的情況,降低了學(xué)習(xí)難度。
3. C++教材應(yīng)當(dāng)體現(xiàn)C++標(biāo)準(zhǔn)
C++是從C語言發(fā)展而來的,為了與C兼容,C++保留了C的許多用法,人們在編寫C++程序時也常常沿用C的某些傳統(tǒng)用法。例如主函數(shù)為void類型,無返回值;頭文件帶后綴.h;使用系統(tǒng)庫時不使用命名空間等。但是,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)提倡C++的新方法。應(yīng)當(dāng)引導(dǎo)讀者從一開始就按照C++標(biāo)準(zhǔn)編寫程序,養(yǎng)成C++的編程風(fēng)格。本書各章都是依據(jù)C++標(biāo)準(zhǔn)介紹的,同時也說明允許使用的C的用法。在本書中,程序的形式大致如下:#include//頭文件不帶后綴.h
#include //包含string頭文件,以便能在程序中使用字符串變量
using namespace std; //使用系統(tǒng)庫時使用命名空間std
int main() //主函數(shù)為int類型
{
string str; //可以定義字符串變量str
return 0; //程序正常執(zhí)行則返回0
4. 化解難點,使讀者學(xué)習(xí)C++更容易
作者在寫作過程中花了很大的精力去考慮怎樣使讀者易于接受和理解。作者一貫認(rèn)為,教材編著者應(yīng)當(dāng)與讀者將心比心,換位思考,要站在讀者的立場上思考問題,幫助他們排除學(xué)習(xí)中的困難,要善于把復(fù)雜的問題簡單化,而不應(yīng)當(dāng)把簡單的問題復(fù)雜化,要善于化解難點,深入淺出。不要讓讀者被一大堆高深莫測的名詞術(shù)語嚇住,有些問題看起來很深奧,其實換一個角度去解釋就很容易理解,甚至用一個通俗的例子就把問題說清楚了。
本書用通俗易懂的方法和語言敘述復(fù)雜的概念。傳統(tǒng)的教學(xué)三部曲是:“提出概念—解釋概念—舉例說明”,作者在多年的計算機教學(xué)實踐中,采用了新的三部曲:“提出問題—分析和解決問題—歸納分析”。從具體到抽象,從實際到理論,符合初學(xué)者的認(rèn)知規(guī)律。本書在引入每一個程序時,都按照以下幾個步驟展開:提出問題—編寫程序—運行結(jié)果—程序分析。由淺入深,逐步展開。
本書便于自學(xué),即使沒有老師講解,讀者也能看懂本書的大部分內(nèi)容。這樣,老師教學(xué)時就可以不必完全按照教材的內(nèi)容和順序詳細(xì)講解,而可以選擇重點講授,其余內(nèi)容由學(xué)生自學(xué)。
5. 本教材中的程序,是從教學(xué)的角度考慮的
本書中的程序是為了幫助讀者更好地理解某一方面的教學(xué)內(nèi)容而專門編寫的,并不一定是實際應(yīng)用的程序。一個實際的C++程序需要考慮許多因素,綜合各部分知識,有許多注釋行,而且一般是多文件的程序,篇幅較長,往往不適合作為教學(xué)程序。教學(xué)程序?qū)栴}進(jìn)行了簡化,盡量壓縮不必要的語句,減少注釋行,篇幅一般不長,力求使讀者能讀懂程序。
有些在專業(yè)人員看來很“幼稚”的程序,對初學(xué)者來說可能是一個很合適的教學(xué)用例。不要忘記,教材的任務(wù)是用讀者容易理解的方法講清基本的概念和方法。在初步掌握C++編程方法后,可以逐步使程序復(fù)雜一些,長一些,更接近真實程序一些。各章中的習(xí)題與例題相比,會復(fù)雜一些。在學(xué)完本課程后,最好完成一個實際的應(yīng)用程序,以提高實際應(yīng)用的能力。
6. 要有相應(yīng)的配套教學(xué)參考用書,以滿足不同的需要
考慮到不同學(xué)校、不同專業(yè)、不同讀者對學(xué)習(xí)C++有不同的要求,因此提供配套用書,不同的讀者可以根據(jù)要求選用。本書有兩本配套的教學(xué)參考書:
(1) 《C++面向?qū)ο蟪绦蛟O(shè)計題解與上機指導(dǎo)(第2版)》,清華大學(xué)出版社出版。該書提供主教材各章中的全部習(xí)題的解答。由于教材的篇幅有限,有些很好的例子無法在教材中列出,我們把它們作為習(xí)題,希望讀者自己完成,教師也可以從中選擇一些習(xí)題作為例題講授。學(xué)生除了完成教師指定的習(xí)題外,最好把習(xí)題解答中的程序看一遍,以更好地理解C++程序,擴大眼界,啟迪思路,豐富知識,增長能力。
程序設(shè)計是一門實踐性很強的課程,只靠聽課和看書是學(xué)不好的。衡量學(xué)習(xí)好壞的標(biāo)準(zhǔn)不是“懂不懂”,而是“會不會干”。因此必須強調(diào)多編程,多上機實踐。在《C++面向?qū)ο蟪绦蛟O(shè)計題解與上機指導(dǎo)(第2版)》中,還介紹了運行C++程序的方法。此外,書中還給出上機實踐任務(wù),要求學(xué)生完成若干次上機實踐。
本書還提供全部例題的源程序,以便于教師講授,也便于學(xué)生在此基礎(chǔ)上調(diào)試和修改程序,以學(xué)得更靈活深入,可在清華大學(xué)出版社網(wǎng)站www.tup.com.cn下載。
(2) 《C++程序設(shè)計實踐指導(dǎo)》,清華大學(xué)出版社出版。該書提供了一批具有實用價值的C++應(yīng)用程序。這是為學(xué)習(xí)教材后進(jìn)一步深入學(xué)習(xí)的讀者準(zhǔn)備的,目的是提高編程能力。
這樣,在學(xué)習(xí)本課程時就有3個臺階: 主教材介紹的是引導(dǎo)入門的基礎(chǔ)例題,相對簡單,容易理解;《C++面向?qū)ο蟪绦蛟O(shè)計題解與上機指導(dǎo)(第2版)》中的習(xí)題解答實際上是一批難度高于例題的程序,使學(xué)習(xí)更深入;《C++程序設(shè)計實踐指導(dǎo)》中提供的是實用或接近實用的程序,可供實際編程參考。
有的專業(yè)對學(xué)生使用C++編程有一定要求,可以在學(xué)完課程后,安排一段集中的時間進(jìn)行一次編程實踐,相當(dāng)于課程設(shè)計。該書內(nèi)容包括: 怎樣編寫C++應(yīng)用程序;提供若干個不同規(guī)模的實際的C++應(yīng)用程序供分析閱讀;安排并指導(dǎo)學(xué)生完成1~2個C++應(yīng)用程序。經(jīng)過這樣的訓(xùn)練,學(xué)生的實際能力將會有較大的提高。
此外,還向使用本書的教師免費提供講課的電子演示文稿(素材),以節(jié)省教師的備課時間。
本書由譚浩強教授編寫,譚亦峰和薛淑斌高級工程師參加了寫作思路的研討、收集資料、調(diào)試部分程序等工作。全國高等院校計算機基礎(chǔ)教育研究會和浩強工作室的各位專家以及全國各高校老師多年來對作者始終給予了熱情的支持和鼓勵。清華大學(xué)出版社對本書的出版十分重視并作了周到的安排,使本書得以在短時間內(nèi)出版。對于曾經(jīng)鼓勵、支持和幫助過我的朋友,謹(jǐn)表示真摯的謝意。
本書肯定會有不妥之處,誠盼專家和廣大讀者不吝指正。
謹(jǐn)識
2014年春于清華園
譚浩強,教授,我國著名計算機教育專家,1934年生。1958年清華大學(xué)畢業(yè)學(xué)生時代曾擔(dān)任清華大學(xué)學(xué)生會主席、北京市人民代表他是我國計算機普及和高校計算機基礎(chǔ)教育開拓者之一,現(xiàn)任全國高等院校計算機基礎(chǔ)教育研究會榮譽會長、教育部全國計算機應(yīng)用技術(shù)證書考試委員會主任委員。譚浩強教授創(chuàng)造了3個世界紀(jì)錄:(1)20年來他(及和他人合作)共編著出版了140本計算機著作,此外主編了300多本計算機書籍,是出版科技著作數(shù)量最多的人。(2)他編著和主編的書發(fā)行量超過5000萬冊,是讀者最多的科技作家我國平均每26人、知識分子每1、2人就擁有1本譚浩強教授編著的書(3)他和別人合作編著的《BASIC語言》發(fā)行了1250萬冊,創(chuàng)科技書籍發(fā)行量的世界紀(jì)錄,此外,他編著的《C程序設(shè)計》發(fā)行了1100萬冊:他曾在中央電視臺主講了BASIC,F(xiàn)ORTRAN,COBOL,Pascal,QBASIC,C,VisualBasic七種計算機語言,觀眾超過500萬人。在我國學(xué)習(xí)計算機的人中很少有不知道譚浩強教授的。他善于用容易理解的方法和語言說明復(fù)雜的概念許多人認(rèn)為他開創(chuàng)了計算機書籍貼近大眾的新風(fēng),為我國的計算機普及事業(yè)做出了重要的貢獻(xiàn)。譚浩強教授曾獲全國高校教學(xué)成果國家級獎、國家科技進(jìn)步獎,以及北京市政府授予的“有突出貢獻(xiàn)專家”稱號。《計算機世界》報組織的“世紀(jì)評選”把他評為我國“20世紀(jì)最有影響的IT人物”10個人之一(排在第2位),他的功績是把千百萬群眾帶入計算機的大門。
第1章 C++的初步知識
1.1 從C到C++
1.2 最簡單的C++程序
1.3 C++對C的擴充
1.3.1 C++的輸入輸出
1.3.2 用const定義常變量
1.3.3 函數(shù)原型聲明
1.3.4 函數(shù)的重載
1.3.5 函數(shù)模板
1.3.6 有默認(rèn)參數(shù)的函數(shù)
1.3.7 變量的引用
1.3.8 內(nèi)置函數(shù)
1.3.9 作用域運算符
1.3.10 字符串變量
1.3.11 動態(tài)分配/撤銷內(nèi)存的運算符new和delete 第1章 C++的初步知識
1.1 從C到C++
1.2 最簡單的C++程序
1.3 C++對C的擴充
1.3.1 C++的輸入輸出
1.3.2 用const定義常變量
1.3.3 函數(shù)原型聲明
1.3.4 函數(shù)的重載
1.3.5 函數(shù)模板
1.3.6 有默認(rèn)參數(shù)的函數(shù)
1.3.7 變量的引用
1.3.8 內(nèi)置函數(shù)
1.3.9 作用域運算符
1.3.10 字符串變量
1.3.11 動態(tài)分配/撤銷內(nèi)存的運算符new和delete
1.3.12 C++對C功能擴展的小結(jié)
1.4 C++程序的編寫和實現(xiàn)
1.5 關(guān)于C++上機實踐
習(xí)題
第2章 類和對象的特性
2.1 面向?qū)ο蟪绦蛟O(shè)計方法概述
2.1.1 什么是面向?qū)ο蟮某绦蛟O(shè)計
2.1.2 面向?qū)ο蟪绦蛟O(shè)計的特點
2.1.3 類和對象的作用
2.1.4 面向?qū)ο蟮能浖_發(fā)
2.2 類的聲明和對象的定義
2.2.1 類和對象的關(guān)系432.2.2 聲明類的類型
2.2.3 定義對象的方法
2.2.4 類和結(jié)構(gòu)體類型的異同
2.3 類的成員函數(shù)
2.3.1 成員函數(shù)的性質(zhì)
2.3.2 在類外定義成員函數(shù)
2.3.3 內(nèi)置成員函數(shù)(inline成員函數(shù))
2.3.4 成員函數(shù)的存儲方式
2.4 對象成員的引用
2.4.1 通過對象名和成員運算符訪問對象中的成員
2.4.2 通過指向?qū)ο蟮闹羔樤L問對象中的成員
2.4.3 通過對象的引用來訪問對象中的成員
2.5 類和對象的簡單應(yīng)用舉例
2.6 類的封裝性和信息隱蔽
2.6.1 公用接口與私有實現(xiàn)的分離
2.6.2 類聲明和成員函數(shù)定義的分離
2.6.3 面向?qū)ο蟪绦蛟O(shè)計中的幾個名詞
習(xí)題
第3章 怎樣使用類和對象
3.1 利用構(gòu)造函數(shù)對類對象進(jìn)行初始化
3.1.1 對象的初始化
3.1.2 用構(gòu)造函數(shù)實現(xiàn)數(shù)據(jù)成員的初始化
3.1.3 帶參數(shù)的構(gòu)造函數(shù)
3.1.4 用參數(shù)初始化表對數(shù)據(jù)成員初始化
3.1.5 構(gòu)造函數(shù)的重載
3.1.6 使用默認(rèn)參數(shù)的構(gòu)造函數(shù)
3.2 利用析構(gòu)函數(shù)進(jìn)行清理工作
3.3 調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的順序
3.4 對象數(shù)組
3.5 對象指針
3.5.1 指向?qū)ο蟮闹羔?br />3.5.2 指向?qū)ο蟪蓡T的指針
3.5.3 指向當(dāng)前對象的this指針
3.6 共用數(shù)據(jù)的保護(hù)
3.6.1 常對象
3.6.2 常對象成員
3.6.3 指向?qū)ο蟮某V羔?br />3.6.4 指向常對象的指針變量
3.6.5 對象的常引用
3.6.6 const型數(shù)據(jù)的小結(jié)
3.7 對象的動態(tài)建立和釋放
3.8 對象的賦值和復(fù)制
3.8.1 對象的賦值
3.8.2 對象的復(fù)制
3.9 靜態(tài)成員
3.9.1 靜態(tài)數(shù)據(jù)成員
3.9.2 靜態(tài)成員函數(shù)
3.10 友元
3.10.1 友元函數(shù)
3.10.2 友元類
3.11 類模板
習(xí)題
第4章 對運算符進(jìn)行重載
4.1 為什么要對運算符重載
4.2 對運算符重載的方法
4.3 重載運算符的規(guī)則
4.4 運算符重載函數(shù)作為類成員函數(shù)和友元函數(shù)
4.5 重載雙目運算符
4.6 重載單目運算符
4.7 重載流插入運算符和流提取運算符
4.7.1 重載流插入運算符“<<”
4.7.2 重載流提取運算符“>>”
4.8 有關(guān)運算符重載的歸納
4.9 不同類型數(shù)據(jù)間的轉(zhuǎn)換
4.9.1 標(biāo)準(zhǔn)類型數(shù)據(jù)間的轉(zhuǎn)換
4.9.2 用轉(zhuǎn)換構(gòu)造函數(shù)進(jìn)行不同類型數(shù)據(jù)的轉(zhuǎn)換
4.9.3 類型轉(zhuǎn)換函數(shù)
習(xí)題
第5章 繼承與派生
5.1 什么是繼承與派生
5.2 派生類的聲明方式
5.3 派生類的構(gòu)成
5.4 派生類成員的訪問屬性
5.4.1 公用繼承
5.4.2 私有繼承
5.4.3 保護(hù)成員和保護(hù)繼承
5.4.4 多級派生時的訪問屬性
5.5 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)
5.5.1 簡單的派生類的構(gòu)造函數(shù)
5.5.2 有子對象的派生類的構(gòu)造函數(shù)
5.5.3 多層派生時的構(gòu)造函數(shù)
5.5.4 派生類構(gòu)造函數(shù)的特殊形式
5.5.5 派生類的析構(gòu)函數(shù)
5.6 多重繼承
5.6.1 聲明多重繼承的方法
5.6.2 多重繼承派生類的構(gòu)造函數(shù)
5.6.3 多重繼承引起的二義性問題
5.6.4 虛基類
5.7 基類與派生類的轉(zhuǎn)換
5.8 繼承與組合
5.9 繼承在軟件開發(fā)中的重要意義
習(xí)題
第6章 多態(tài)性與虛函數(shù)
6.1 什么是多態(tài)性
6.2 一個典型的例子
6.3 利用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性
6.3.1 虛函數(shù)的作用
6.3.2 靜態(tài)關(guān)聯(lián)與動態(tài)關(guān)聯(lián)
6.3.3 在什么情況下應(yīng)當(dāng)聲明虛函數(shù)
6.3.4 虛析構(gòu)函數(shù)
6.4 純虛函數(shù)與抽象類
6.4.1 純虛函數(shù)
6.4.2 抽象類
6.4.3 應(yīng)用實例
習(xí)題
第7章 輸入輸出流
7.1 C++的輸入和輸出
7.1.1 輸入輸出的含義
7.1.2 C++的I/O對C的發(fā)展——類型安全和可擴展性
7.1.3 C++的輸入輸出流
7.2 標(biāo)準(zhǔn)輸出流
7.2.1 cout,cerr和clog流
7.2.2 標(biāo)準(zhǔn)類型數(shù)據(jù)的格式輸出
7.2.3 用流成員函數(shù)put輸出字符
7.3 標(biāo)準(zhǔn)輸入流
7.3.1 cin流
7.3.2 用于字符輸入的流成員函數(shù)
7.3.3 istream類的其他成員函數(shù)
7.4 對數(shù)據(jù)文件的操作與文件流
7.4.1 文件的概念
7.4.2 文件流類與文件流對象
7.4.3 文件的打開與關(guān)閉
7.4.4 對ASCII文件的操作
7.4.5 對二進(jìn)制文件的操作
7.5 字符串流
習(xí)題
第8章 C++工具
8.1 異常處理
8.1.1 異常處理的任務(wù)
8.1.2 異常處理的方法
8.1.3 在函數(shù)聲明中進(jìn)行異常情況指定
8.1.4 在異常處理中處理析構(gòu)函數(shù)
8.2 命名空間
8.2.1 為什么需要命名空間
8.2.2 什么是命名空間
8.2.3 使用命名空間解決名字沖突
8.2.4 使用命名空間成員的方法
8.2.5 無名的命名空間
8.2.6 標(biāo)準(zhǔn)命名空間std
8.3 使用早期的函數(shù)庫
習(xí)題
附錄A 常用字符與ASCII代碼對照表
附錄B 運算符和結(jié)合性
參考文獻(xiàn)