C++麵嚮對象程序設計(第2版)/中國高等院校計算機基礎教育課程體係規劃教材 [譚浩強教授力作,普通高等教育“十一五”國傢規劃教材,《C++程序設計(第3版)》的姊妹篇。] pdf epub mobi txt 電子書 下載
編輯推薦
本書為普通高等教育“十一五”國傢級規劃教材,獲全國高校齣版社changxiao書一等奬,是《C++程序設計(第3版)》的姊妹篇。本書作者深入調查瞭大學的程序設計課程的現狀和發展趨勢,參閱瞭國內外數十種有關C++的教材,認真分析瞭讀者在學習中的睏難和認識規律,專門為已學習過C語言的讀者構建瞭便於學習的教材體係,編寫瞭這本C++麵嚮對象程序設計入門教材。
本書對麵嚮對象程序設計的基本理論概念和C++語言的基本內容作瞭通俗而詳盡的說明,並且把這兩方麵有機地結閤起來。第1章介紹麵嚮過程程序設計領域中C++對C的擴充,第2章初步介紹麵嚮對象程序設計的基本知識,在後續各章中由淺入深地介紹怎樣編寫C++程序,在此過程中自然地具體介紹瞭麵嚮對象程序設計方法的應用。
本書沿襲瞭發行逾1250萬冊《C程序設計(第四版)》的寫作風格。全書內容全麵,例題豐富,概念清晰,循序漸進,易於學習,即使沒有教師講授,讀者也能看懂本書的大部分內容。本書是學習C++程序設計的入門教材,可供各類專業學生使用,也可作為計算機培訓班的教材以及讀者自學參考。
本書配有兩本輔導教材,即《C++麵嚮對象程序設計題解與上機指導(第2版)》(ISBN:9787302362623)和《C++程序設計實踐指導》(ISBN:9787302110873)。本書配有PPT教案、主輔教材配套源代碼,可到清華大學齣版社官網下載。
內容簡介
C++是近年來國內外廣泛學習和使用的支持麵嚮對象程序設計的現代計算機高級語言,國內許多高校已陸續開設瞭C++程序設計課程。但是,由於C++涉及的概念很多,語法比較復雜,內容十分廣泛,不少人感到學習難度很大,難以入門。針對這種情況,作者譚浩強深入研究瞭C++的內容和初學者的認知規律,專門為已學習過C語言的讀者構建瞭便於學習的教材體係,編寫瞭這本C++麵嚮對象程序設計入門教材。
《C++麵嚮對象程序設計(第2版)/中國高等院校計算機基礎教育課程體係規劃教材》對麵嚮對象程序設計的基本理論概念和C++語言的基本內容作瞭通俗而詳盡的說明,並且把這兩方麵有機地結閤起來。第1章介紹麵嚮過程程序設計領域中C++對C的擴充,第2章初步介紹麵嚮對象程序設計的基本知識,在後續各章中由淺入深地介紹怎樣編寫C++程序,在此過程中自然地具體介紹瞭麵嚮對象程序設計方法的應用。
《C++麵嚮對象程序設計(第2版)/中國高等院校計算機基礎教育課程體係規劃教材》內容全麵,概念清晰,例題豐富,通俗易懂,易於學習,可作為大學各專業學習C++麵嚮對象程序設計的基礎教材,也適於C++的初學者自學。即使沒有教師講授,讀者也基本能看懂本書的大部分內容。
作者簡介
譚浩強,教授,我國著名計算機教育專傢,1934年生。1958年清華大學畢業學生時代曾擔任清華大學學生會主席、北京市人民代錶他是我國計算機普及和高校計算機基礎教育開拓者之一,現任全國高等院校計算機基礎教育研究會榮譽會長、教育部全國計算機應用技術證書考試委員會主任委員。譚浩強教授創造瞭3個世界紀錄:(1)20年來他(及和他人閤作)共編著齣版瞭140本計算機著作,此外主編瞭300多本計算機書籍,是齣版科技著作數量zui多的人。(2)他編著和主編的書發行量超過5000萬冊,是讀者zui多的科技作傢我國平均每26人、知識分子每1、2人就擁有1本譚浩強教授編著的書(3)他和彆人閤作編著的《BASIC語言》發行瞭1250萬冊,創科技書籍發行量的世界紀錄,此外,他編著的《C程序設計》發行瞭1100萬冊:他曾在中央電視颱主講瞭BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,VisualBasic七種計算機語言,觀眾超過500萬人。在我國學習計算機的人中很少有不知道譚浩強教授的。他善於用容易理解的方法和語言說明復雜的概念許多人認為他開創瞭計算機書籍貼近大眾的新風,為我國的計算機普及事業做齣瞭重要的貢獻。譚浩強教授曾獲全國高校教學成果國傢奬、國傢科技進步奬,以及北京市政府授予的“有突齣貢獻專傢”稱號。《計算機世界》報組織的“世紀評選”把他評為我國“20世紀zui有影響的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 函數原型聲明
1.3.4 函數的重載
1.3.5 函數模闆
1.3.6 有默認參數的函數
1.3.7 變量的引用
1.3.8 內置函數
1.3.9 作用域運算符
1.3.10 字符串變量
1.3.11 動態分配/撤銷內存的運算符new和delete
1.3.12 C++對C功能擴展的小結
1.4 C++程序的編寫和實現
1.5 關於C++上機實踐
習題
第2章 類和對象的特性
2.1 麵嚮對象程序設計方法概述
2.1.1 什麼是麵嚮對象的程序設計
2.1.2 麵嚮對象程序設計的特點
2.1.3 類和對象的作用
2.1.4 麵嚮對象的軟件開發
2.2 類的聲明和對象的定義
2.2.1 類和對象的關係432.2.2 聲明類的類型
2.2.3 定義對象的方法
2.2.4 類和結構體類型的異同
2.3 類的成員函數
2.3.1 成員函數的性質
2.3.2 在類外定義成員函數
2.3.3 內置成員函數(inline成員函數)
2.3.4 成員函數的存儲方式
2.4 對象成員的引用
2.4.1 通過對象名和成員運算符訪問對象中的成員
2.4.2 通過指嚮對象的指針訪問對象中的成員
2.4.3 通過對象的引用來訪問對象中的成員
2.5 類和對象的簡單應用舉例
2.6 類的封裝性和信息隱蔽
2.6.1 公用接口與私有實現的分離
2.6.2 類聲明和成員函數定義的分離
2.6.3 麵嚮對象程序設計中的幾個名詞
習題
第3章 怎樣使用類和對象
3.1 利用構造函數對類對象進行初始化
3.1.1 對象的初始化
3.1.2 用構造函數實現數據成員的初始化
3.1.3 帶參數的構造函數
3.1.4 用參數初始化錶對數據成員初始化
3.1.5 構造函數的重載
3.1.6 使用默認參數的構造函數
3.2 利用析構函數進行清理工作
3.3 調用構造函數和析構函數的順序
3.4 對象數組
3.5 對象指針
3.5.1 指嚮對象的指針
3.5.2 指嚮對象成員的指針
3.5.3 指嚮當前對象的this指針
3.6 共用數據的保護
3.6.1 常對象
3.6.2 常對象成員
3.6.3 指嚮對象的常指針
3.6.4 指嚮常對象的指針變量
3.6.5 對象的常引用
3.6.6 const型數據的小結
3.7 對象的動態建立和釋放
3.8 對象的賦值和復製
3.8.1 對象的賦值
3.8.2 對象的復製
3.9 靜態成員
3.9.1 靜態數據成員
3.9.2 靜態成員函數
3.10 友元
3.10.1 友元函數
3.10.2 友元類
3.11 類模闆
習題
第4章 對運算符進行重載
4.1 為什麼要對運算符重載
4.2 對運算符重載的方法
4.3 重載運算符的規則
4.4 運算符重載函數作為類成員函數和友元函數
4.5 重載雙目運算符
4.6 重載單目運算符
4.7 重載流插入運算符和流提取運算符
4.7.1 重載流插入運算符“<<”
4.7.2 重載流提取運算符“>>”
4.8 有關運算符重載的歸納
4.9 不同類型數據間的轉換
4.9.1 標準類型數據間的轉換
4.9.2 用轉換構造函數進行不同類型數據的轉換
4.9.3 類型轉換函數
習題
第5章 繼承與派生
5.1 什麼是繼承與派生
5.2 派生類的聲明方式
5.3 派生類的構成
5.4 派生類成員的訪問屬性
5.4.1 公用繼承
5.4.2 私有繼承
5.4.3 保護成員和保護繼承
5.4.4 多級派生時的訪問屬性
5.5 派生類的構造函數和析構函數
5.5.1 簡單的派生類的構造函數
5.5.2 有子對象的派生類的構造函數
5.5.3 多層派生時的構造函數
5.5.4 派生類構造函數的特殊形式
5.5.5 派生類的析構函數
5.6 多重繼承
5.6.1 聲明多重繼承的方法
5.6.2 多重繼承派生類的構造函數
5.6.3 多重繼承引起的二義性問題
5.6.4 虛基類
5.7 基類與派生類的轉換
5.8 繼承與組閤
5.9 繼承在軟件開發中的重要意義
習題
第6章 多態性與虛函數
6.1 什麼是多態性
6.2 一個典型的例子
6.3 利用虛函數實現動態多態性
6.3.1 虛函數的作用
6.3.2 靜態關聯與動態關聯
6.3.3 在什麼情況下應當聲明虛函數
6.3.4 虛析構函數
6.4 純虛函數與抽象類
6.4.1 純虛函數
6.4.2 抽象類
6.4.3 應用實例
習題
第7章 輸入輸齣流
7.1 C++的輸入和輸齣
7.1.1 輸入輸齣的含義
7.1.2 C++的I/O對C的發展——類型安全和可擴展性
7.1.3 C++的輸入輸齣流
7.2 標準輸齣流
7.2.1 cout,cerr和clog流
7.2.2 標準類型數據的格式輸齣
7.2.3 用流成員函數put輸齣字符
7.3 標準輸入流
7.3.1 cin流
7.3.2 用於字符輸入的流成員函數
7.3.3 istream類的其他成員函數
7.4 對數據文件的操作與文件流
7.4.1 文件的概念
7.4.2 文件流類與文件流對象
7.4.3 文件的打開與關閉
7.4.4 對ASCII文件的操作
7.4.5 對二進製文件的操作
7.5 字符串流
習題
第8章 C++工具
8.1 異常處理
8.1.1 異常處理的任務
8.1.2 異常處理的方法
8.1.3 在函數聲明中進行異常情況指定
8.1.4 在異常處理中處理析構函數
8.2 命名空間
8.2.1 為什麼需要命名空間
8.2.2 什麼是命名空間
8.2.3 使用命名空間解決名字衝突
8.2.4 使用命名空間成員的方法
8.2.5 無名的命名空間
8.2.6 標準命名空間std
8.3 使用早期的函數庫
習題
附錄A 常用字符與ASCII代碼對照錶
附錄B 運算符和結閤性
參考文獻
前言/序言
前一時期,人們編寫的程序多是麵嚮過程的,設計者必須充分地考慮到程序的每一個細節,要指定程序在每一瞬時應執行的動作。C語言是麵嚮過程的結構化和模塊化的語言,用於處理小型問題時得心應手,但在處理大型問題時就顯得力不從心瞭。為瞭處理大型程序的需要,計算機科學傢提齣瞭麵嚮對象程序設計的理論,並於20世紀末期在C語言的基礎上研製齣支持麵嚮對象的C++語言,為處理大程序提供瞭有力的工具。
近年來,國內許多大學的計算機類專業都開設瞭C++程序設計課程,一些大學的非計算機專業也開設瞭C++麵嚮對象程序設計課程,許多學過C語言程序設計的人也想瞭解和學習C++和麵嚮對象程序設計的有關知識。但是,由於C++涉及概念很多,語法比較復雜,內容十分廣泛,使不少人感到學習難度較大,難以入門。
在許多讀者的要求和鼓勵下,作者於2004年完成瞭《C++程序設計》一書的編寫工作,由清華大學齣版社齣版並嚮全國發行。該書以未學過C語言的讀者為對象,從麵嚮過程入手介紹程序設計的基本知識和方法,然後介紹用C++進行麵嚮對象程序設計的方法。該書齣版後,由於概念清晰,通俗易懂,受到師生們的歡迎和好評,幾年內發行瞭30多萬冊。
目前在大學理工類專業,普遍開設瞭C語言程序設計的課程,許多學生在學習C語言後希望對C++麵嚮對象程序設計有所瞭解,以便日後在需要時能較快地進入該領域。很多師生希望我能齣版一本以C語言為起點的C++教材。
為此,2006年我在清華大學齣版社齣版瞭《C++麵嚮對象程序設計》一書。該書是在《C++程序設計》一書的基礎上編寫而成的。考慮到本書的讀者已學習過C語言程序設計,因此不必再重新學習麵嚮過程程序設計的部分,而直接從麵嚮對象程序設計入手,將《C++程序設計》一書中介紹麵嚮對象程序設計的內容抽齣來改寫後單獨成書,並且重新寫瞭第1章,介紹C++麵嚮對象程序設計的初步知識以及C++對C在麵嚮過程程序設計方麵的改進與增強,為以後各章的學習打下基礎。這樣的安排使本書內容更集中,篇幅更緊湊。本書仍然保持瞭通俗易懂、貼近讀者、容易入門的特點。希望有助於大學生學習C++課程,初步掌握麵嚮對象程序設計的方法。
經過幾年的教學實踐後,作者現在對此書進行修訂,齣版瞭《C++麵嚮對象程序設計(第2版)》,即本書。現對本書的指導思想作以下的說明。1. 教材應當準確定位,閤理取捨內容
首先要弄清楚教材是為什麼人寫的,他們學習C++的目的是什麼,應當學到什麼程度,不能無的放矢。應當聲明: 本書的對象不是C++的專業開發人員,而是高校各專業的大學生,他們並無從事程序設計的實際經驗,將來也不一定是C++的專業開發人員。眾所周知,研製C++的初衷是為瞭解決大型軟件開發中遇到的問題,提高軟件的開發效率。隻有參加過研製大型軟件的人纔會真正體會到C++的優越性,並善於利用C++的獨特機製去進行軟件開發。
大學生在學校學習期間學習C++的目的是瞭解麵嚮對象程序設計方法,能夠利用C++編寫相對簡單的程序,為以後進一步學習和應用打下良好的基礎。不可能設想,通過幾十小時的學習,就能使一個沒有程序設計基礎的初學者變成一個熟練的C++開發人員。應當有一個實事求是的分析和估計。因此,本書著力於使讀者對C++的全貌和作用有基本的認識,用容易理解的方法講清楚有關的基本概念和基本方法,而不去羅列C++語法中各種煩瑣的細節;否則將會使篇幅過大(許多國外的書厚達近韆頁),而且會衝淡重點,主次不分,使讀者感到枯燥無味。
2. 要設計閤適的教材體係
C++程序設計牽涉麵嚮對象程序設計的理論、C++語言的語法以及算法3個方麵的內容,其中每一方麵都包含十分豐富的內容,都可以分彆單獨成書。顯然在一本教材中深入、詳細地介紹以上3個方麵的知識是不可能的,必須把它們有機地結閤起來,綜閤應用。不同的書對此采取不同的寫法,側重點有所不同,各有優缺點,適閤於不同的讀者,需要在教學實踐中檢驗,取長補短,不斷完善。
作者認為,要進行C++程序設計當然需要瞭解麵嚮對象程序設計的有關概念,但是本課程畢竟不是一門麵嚮對象程序設計的理論課程,在本書中不是抽象地介紹麵嚮對象程序設計的理論,而是在介紹C++語言的特點和應用過程中,自然地引齣麵嚮對象程序設計的有關概念,通過C++的編程過程理解麵嚮對象程序設計方法。在各章中結閤例題介紹有關的算法,引導讀者思考怎樣構造一個算法。
要用C++編寫程序,最基本的要求是正確掌握和運用C++。由於C++語法復雜,內容又多,如果對它缺乏係統瞭解,將難以真正應用,編寫齣來的程序將會錯誤百齣,通不過編譯,事倍功半。本書的做法是全麵而係統地介紹C++的主要特點和功能,引導讀者由簡到繁地學會編寫C++程序。有瞭C++編程的初步基礎後,再進一步提高。這樣的方法可能符閤大多數學習者的情況,降低瞭學習難度。
3. C++教材應當體現C++標準
C++是從C語言發展而來的,為瞭與C兼容,C++保留瞭C的許多用法,人們在編寫C++程序時也常常沿用C的某些傳統用法。例如主函數為void類型,無返迴值;頭文件帶後綴.h;使用係統庫時不使用命名空間等。但是,ANSI C++標準在一些方麵有新的規定,例如要求主函數為int類型,如果程序正常執行則返迴0值;係統頭文件不帶後綴.h;使用係統庫時使用命名空間std;增加瞭字符串類型string等。
雖然C++仍然允許使用從C繼承來的傳統用法,但作者認為,作為教材,應提倡C++的新方法。應當引導讀者從一開始就按照C++標準編寫程序,養成C++的編程風格。本書各章都是依據C++標準介紹的,同時也說明允許使用的C的用法。在本書中,程序的形式大緻如下:#include//頭文件不帶後綴.h
#include //包含string頭文件,以便能在程序中使用字符串變量
using namespace std; //使用係統庫時使用命名空間std
int main() //主函數為int類型
{
string str; //可以定義字符串變量str
return 0; //程序正常執行則返迴0
}4. 化解難點,使讀者學習C++更容易
作者在寫作過程中花瞭很大的精力去考慮怎樣使讀者易於接受和理解。作者一貫認為,教材編著者應當與讀者將心比心,換位思考,要站在讀者的立場上思考問題,幫助他們排除學習中的睏難,要善於把復雜的問題簡單化,而不應當把簡單的問題復雜化,要善於化解難點,深入淺齣。不要讓讀者被一大堆高深莫測的名詞術語嚇住,有些問題看起來很深奧,其實換一個角度去解釋就很容易理解,甚至用一個通俗的例子就把問題說清楚瞭。
本書用通俗易懂的方法和語言敘述復雜的概念。傳統的教學三部麯是:“提齣概念—解釋概念—舉例說明”,作者在多年的計算機教學實踐中,采用瞭新的三部麯:“提齣問題—分析和解決問題—歸納分析”。從具體到抽象,從實際到理論,符閤初學者的認知規律。本書在引入每一個程序時,都按照以下幾個步驟展開:提齣問題—編寫程序—運行結果—程序分析。由淺入深,逐步展開。
本書便於自學,即使沒有老師講解,讀者也能看懂本書的大部分內容。這樣,老師教學時就可以不必完全按照教材的內容和順序詳細講解,而可以選擇重點講授,其餘內容由學生自學。
5. 本教材中的程序,是從教學的角度考慮的
本書中的程序是為瞭幫助讀者更好地理解某一方麵的教學內容而專門編寫的,並不一定是實際應用的程序。一個實際的C++程序需要考慮許多因素,綜閤各部分知識,有許多注釋行,而且一般是多文件的程序,篇幅較長,往往不適閤作為教學程序。教學程序對問題進行瞭簡化,盡量壓縮不必要的語句,減少注釋行,篇幅一般不長,力求使讀者能讀懂程序。
有些在專業人員看來很“幼稚”的程序,對初學者來說可能是一個很閤適的教學用例。不要忘記,教材的任務是用讀者容易理解的方法講清基本的概念和方法。在初步掌握C++編程方法後,可以逐步使程序復雜一些,長一些,更接近真實程序一些。各章中的習題與例題相比,會復雜一些。在學完本課程後,最好完成一個實際的應用程序,以提高實際應用的能力。
6. 要有相應的配套教學參考用書,以滿足不同的需要
考慮到不同學校、不同專業、不同讀者對學習C++有不同的要求,因此提供配套用書,不同的讀者可以根據要求選用。本書有兩本配套的教學參考書:
(1) 《C++麵嚮對象程序設計題解與上機指導(第2版)》,清華大學齣版社齣版。該書提供主教材各章中的全部習題的解答。由於教材的篇幅有限,有些很好的例子無法在教材中列齣,我們把它們作為習題,希望讀者自己完成,教師也可以從中選擇一些習題作為例題講授。學生除瞭完成教師指定的習題外,最好把習題解答中的程序看一遍,以更好地理解C++程序,擴
C++麵嚮對象程序設計(第2版)/中國高等院校計算機基礎教育課程體係規劃教材 [譚浩強教授力作,普通高等教育“十一五”國傢規劃教材,《C++程序設計(第3版)》的姊妹篇。] 下載 mobi epub pdf txt 電子書
C++麵嚮對象程序設計(第2版)/中國高等院校計算機基礎教育課程體係規劃教材 [譚浩強教授力作,普通高等教育“十一五”國傢規劃教材,《C++程序設計(第3版)》的姊妹篇。] pdf epub mobi txt 電子書 下載