注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)C/C++及其相關(guān)C++程序設(shè)計(jì)教程(第二版)

C++程序設(shè)計(jì)教程(第二版)

C++程序設(shè)計(jì)教程(第二版)

定 價(jià):¥39.50

作 者: 錢能著
出版社: 清華大學(xué)出版社
叢編項(xiàng): C++程序設(shè)計(jì)系列教材
標(biāo) 簽: C++

ISBN: 9787302114642 出版時(shí)間: 2005-09-01 包裝: 膠版紙
開本: 26cm 頁(yè)數(shù): 551 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書是《C程序設(shè)計(jì)教程》的第二版。然而從指導(dǎo)思想、內(nèi)容結(jié)構(gòu)、寫作特點(diǎn)等方面,都以全新的面貌呈現(xiàn)于讀者。全書全部重新執(zhí)筆,代碼全部重寫,涵蓋了基本C編程方法的全部技術(shù)特征。本書以C標(biāo)準(zhǔn)為藍(lán)本,從過程化編程的基本描述,到對(duì)象化編程的方法展開,乃至高級(jí)編程的實(shí)質(zhì)揭示,形成一條自然流暢的主線,通俗易懂,形象風(fēng)趣。本書在內(nèi)容結(jié)構(gòu)上自成體系,并以獨(dú)特的描述手法,輻射到計(jì)算機(jī)專業(yè)其他諸課程,體系嚴(yán)謹(jǐn),結(jié)構(gòu)獨(dú)特。作者在長(zhǎng)期的教學(xué)、科研實(shí)踐以及ACM大學(xué)生程序設(shè)計(jì)競(jìng)賽培訓(xùn)工作中,總結(jié)出了許多難能可貴的教學(xué)經(jīng)驗(yàn),能使讀者快捷而準(zhǔn)確地找到編程技術(shù)要領(lǐng),洞穿C內(nèi)部實(shí)現(xiàn)要害,直擊抽象編程本質(zhì)。與本書配套,《C課程設(shè)計(jì)指導(dǎo)》、《C程序設(shè)計(jì)習(xí)題及解答》、《C程序設(shè)計(jì)教程詳解》和《C程序設(shè)計(jì)教程精粹》也將陸續(xù)面世。除此之外,還配有C程序設(shè)計(jì)教程課件和源代碼供讀者下載。本書適用于大學(xué)計(jì)算機(jī)程序設(shè)計(jì)教學(xué),也適合于立志自學(xué)成才的讀者,幫助他們從零開始走向高級(jí)程序員。本書也旨在引導(dǎo)讀者從欣賞C入門的初級(jí)精彩到享受C經(jīng)典名作的內(nèi)在精彩,因而,也是一本軟件工作者不可多得的案頭參考書。本書前言第二版前言計(jì)算機(jī)科學(xué)與應(yīng)用的迅猛發(fā)展,直接推動(dòng)了《C程序設(shè)計(jì)教程》一書的再版。C技術(shù)正突飛猛進(jìn),日臻完善,而人們也越來(lái)越多地需要更強(qiáng)有力的計(jì)算機(jī)語(yǔ)言工具幫助描述和解決實(shí)際的問題。基于此,新版在各方面較之第一版都作了大幅度的修改:在指導(dǎo)思想上,更加強(qiáng)調(diào)以培養(yǎng)具有實(shí)際編程能力的程序員為主要目標(biāo);在內(nèi)容結(jié)構(gòu)上,增強(qiáng)了描述的層次性,從編程基礎(chǔ)、過程化編程、對(duì)象化編程,到高級(jí)編程的漸進(jìn),界限分明而又自然過渡;在寫作特點(diǎn)上,其通俗易懂性較之第一版有過之而無(wú)不及;在使用范圍上,它主要面向大學(xué)生、研究生、教師和科研工作者。由于本書自成體系,又輻射到計(jì)算機(jī)專業(yè)諸課程,所以對(duì)完善讀者的計(jì)算機(jī)知識(shí)體系也大有裨益。C的權(quán)威計(jì)算機(jī)應(yīng)用普及中,有兩種學(xué)習(xí)內(nèi)容:一種是學(xué)習(xí)其操作方法,一種是學(xué)習(xí)其開發(fā)方法。前者是學(xué)會(huì)如何使用計(jì)算機(jī),將計(jì)算機(jī)作為工具,產(chǎn)生直接的經(jīng)濟(jì)效益;后者是通過在計(jì)算機(jī)上的創(chuàng)新活動(dòng),讓計(jì)算機(jī)學(xué)習(xí),以使計(jì)算機(jī)更"聰明"。顯然后者需要付出更多的努力,也需要更多的計(jì)算機(jī)科學(xué)知識(shí),當(dāng)然可以產(chǎn)生更多、更大、更深遠(yuǎn)的經(jīng)濟(jì)效益,而且開發(fā)實(shí)踐又會(huì)驅(qū)使其對(duì)計(jì)算機(jī)進(jìn)行更深層次的研究。C的編程學(xué)習(xí)是后者的一種入門。在我國(guó),計(jì)算機(jī)的發(fā)展還落后于發(fā)達(dá)國(guó)家,甚至還趕不上印度、新加坡。中國(guó)要實(shí)現(xiàn)軟件產(chǎn)業(yè)大國(guó)的夢(mèng)想,需要大量的高級(jí)程序員和軟件工程師。程序設(shè)計(jì)語(yǔ)言的學(xué)習(xí)與運(yùn)用是一個(gè)重要的契機(jī)?,F(xiàn)在,大學(xué)計(jì)算機(jī)專業(yè)一年級(jí)必開程序設(shè)計(jì)課,甚至中小學(xué)的計(jì)算機(jī)興趣小組和計(jì)算機(jī)信息學(xué)競(jìng)賽也要進(jìn)行計(jì)算機(jī)編程。使用C作為學(xué)習(xí)和開發(fā)的語(yǔ)言在我國(guó)不斷得到升溫,而且,是否會(huì)編程儼然成了懂不懂計(jì)算機(jī)的一種標(biāo)志了。無(wú)論搞開發(fā),還是搞研究,對(duì)程序設(shè)計(jì)語(yǔ)言的使用有著同樣高的要求:要能夠有很好的可靠性、高效率,可以在不同平臺(tái)上移植,有盡可能多的語(yǔ)言內(nèi)容標(biāo)準(zhǔn)化,支持?jǐn)?shù)據(jù)一致性,支持程序描述的簡(jiǎn)捷與清晰,風(fēng)格自然。而這些,都是C語(yǔ)言的外在特點(diǎn)。C既是設(shè)計(jì)工具,又是實(shí)現(xiàn)工具,既可抽象概念,描述實(shí)際問題,又兼顧效率,能很好地實(shí)現(xiàn)底層的系統(tǒng)軟件。

作者簡(jiǎn)介

  錢能,1984年畢業(yè)于上海復(fù)旦大學(xué)計(jì)算機(jī)軟件專業(yè);1988年獲電子工業(yè)部?jī)?yōu)秀科技青年稱號(hào);兩次獲得浙江省級(jí)優(yōu)秀教學(xué)成果獎(jiǎng)二等獎(jiǎng)。1999年在清華大學(xué)出版社出版 “C++程序設(shè)計(jì)系列教材” 的第一批,共三種:《C++程序設(shè)計(jì)教程》、《C++程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)》及《C++程序設(shè)計(jì)習(xí)題及解答》。2002年,《C++程序設(shè)計(jì)教程》一書獲得國(guó)家教育部評(píng)選的全國(guó)高校優(yōu)秀教材二等獎(jiǎng)。目前該書累計(jì)銷量已超過400000冊(cè),深受高校師生的歡迎。指導(dǎo)學(xué)生多次在ACM/ICPC亞洲預(yù)賽北京賽區(qū)中獲得銅獎(jiǎng)以上成績(jī);2004年指導(dǎo)學(xué)生在ACM/ICPC亞洲預(yù)賽北京賽區(qū)中獲得排名第8。從事《程序設(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)》、《離散數(shù)學(xué)》、《算法與設(shè)計(jì)》、《編程與技巧》等專業(yè)基礎(chǔ)類課程教學(xué),及算法研究,教學(xué)經(jīng)驗(yàn)豐富。

圖書目錄

目錄(Contents)
第一部分 基礎(chǔ)編程(Part I The Basic Programming)
第1章 概述(Introduction) 2
1.1 程序設(shè)計(jì)語(yǔ)言(Programming Language) 2
1.2 C++前史(The Origins and History of C++) 4
1.3 C++ 5
1.3.1 褒貶C(Comment on C) 5
1.3.2 C繼承者(Inheritor of C) 6
1.3.3 標(biāo)準(zhǔn)C++(Standard C++) 7
1.4 C++編程流程(C++ Programming Flow) 8
1.4.1 編程過程(Programming Procedure) 8
1.4.2 最小樣板程序(Minimum Sample Program) 9
1.4.3 編程風(fēng)格(Programming Style) 10
1.5 程序與算法(Programs & Algorithms) 11
1.5.1 程序(Programs) 11
1.5.2 算法(Algorithms) 11
1.5.3 編程與結(jié)構(gòu)(Programming & Structures) 12
1.6 過程化程序設(shè)計(jì)(Procedural Programming) 13
1.6.1 基于過程的程序設(shè)計(jì)(Procedure-Based Programming) 13
1.6.2 結(jié)構(gòu)化程序設(shè)計(jì)(Structured Programming) 16
1.7 對(duì)象化程序設(shè)計(jì)(Objectified Programming) 17
1.7.1 基于對(duì)象的程序設(shè)計(jì)(Object-Based Programming) 17
1.7.2 面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object-Oriented Programming) 20
1.8 目的歸納(Conclusion) 21
1.9 練習(xí)1(Exercises 1) 23第2章 基本編程語(yǔ)句(Basic Programming Statements) 24
2.1 說(shuō)明語(yǔ)句(Declarative Statements) 24
2.1.1 變量定義(Variable Definition) 25
2.1.2 函數(shù)聲明和定義(Function Declaration & Definition) 26
2.1.3 初始化與賦值(Initializing & Assignment) 27
2.2 條件語(yǔ)句(Conditional Statements) 27
2.2.1 if語(yǔ)句(if Statement) 27
2.2.2 條件表達(dá)式(Conditional Expressions) 30
2.2.3 switch語(yǔ)句(switch Statement) 31
2.2.4 if或switch語(yǔ)句(if or switch) 34
2.3 循環(huán)語(yǔ)句(Loop Statements) 34
2.3.1 for循環(huán)結(jié)構(gòu)(for Loop Structure) 34
2.3.2 for循環(huán)(for Loop) 36
2.3.3 while循環(huán)(while Loop) 37
2.3.4 do-while循環(huán)(do-while Loop) 39
2.4 循環(huán)設(shè)計(jì)(Loop Designs) 40
2.4.1 字符圖形(Character Graphics) 40
2.4.2 素?cái)?shù)判定(Prime Decision) 44
2.5 輸入輸出語(yǔ)句(I/O Statements) 45
2.5.1 標(biāo)準(zhǔn)I/O流(Standard I/O Stream) 45
2.5.2 流狀態(tài)(Stream States) 46
2.5.3 文件流(File Streams) 48
2.6 轉(zhuǎn)移語(yǔ)句(Move Statements) 51
2.6.1 break語(yǔ)句(break Statement) 51
2.6.2 continue語(yǔ)句(continue Statement) 51
2.6.3 goto語(yǔ)句(goto Statement) 53
2.7 再做循環(huán)設(shè)計(jì)(More Loop Designs) 55
2.7.1 邏輯判斷(Logic Decision) 55
2.7.2 級(jí)數(shù)逼近(Progression Approximation) 57
2.8 目的歸納(Conclusion) 60
2.9 練習(xí)2(Exercises 2) 61第3章 數(shù)據(jù)類型(Data Types) 64
3.1 整型(int Types) 65
3.1.1 二進(jìn)制補(bǔ)碼(Binary Complement) 65
3.1.2 整型數(shù)表示范圍(int Range) 67
3.1.3 編譯器與整數(shù)長(zhǎng)度(Compiler & int Length) 68
3.1.4 整數(shù)字面值(Integer Literals) 68
3.1.5 整數(shù)算術(shù)運(yùn)算(Integer Arithmetic Operations) 69
3.2 整數(shù)子類(int Subtypes) 70
3.2.1 字符型(char Type) 70
3.2.2 枚舉型(enum Type) 71
3.2.3 布爾型(bool Type) 72
3.3 浮點(diǎn)型(float Type) 72
3.3.1 浮點(diǎn)數(shù)表示(Floating-Point Number Representation) 72
3.3.2 浮點(diǎn)型表示范圍(float Type Ranges) 76
3.4 C-串與string(C-strings & string) 77
3.4.1 C-串(C-strings) 77
3.4.2 字符指針與字符數(shù)組(char Pointers & char Arrays) 77
3.4.3 string 80
3.4.4 string與C-串的輸入輸出(string & C-string I/O) 81
3.4.5 string流(string Streams) 82
3.5 數(shù)組(Arrays) 83
3.5.1 元素個(gè)數(shù)(Number of Elements) 83
3.5.2 初始化(Initialization) 84
3.5.3 默認(rèn)值(Default Values) 85
3.5.4 二維數(shù)組(2-D Arrays) 86
3.6 向量(Vectors) 87
3.6.1 基本操作(Basic Operations) 87
3.6.2 添加元素(Adding Elements) 88
3.6.3 二維向量(2-D Vectors) 89
3.7 指針與引用(Pointers & References) 91
3.7.1 指針(Pointers) 91
3.7.2 指針的類型(Pointer Types) 93
3.7.3 指針運(yùn)算(Pointer Operations) 95
3.7.4 指針限定(Pointers Restrictions) 97
3.7.5 引用(Reference) 98
3.8 目的歸納(Conclusion) 100
3.9 練習(xí)3(Exercises 3) 100第4章 計(jì)算表達(dá)(Computation Expressing) 103
4.1 名詞解釋與操作符(Name Explanation & Operators) 103
4.1.1 名詞解釋(Some Name Explanations) 103
4.1.2 操作符匯總(Operators Summary) 105
4.1.3 操作符的說(shuō)明(Operator Expanations) 105
4.2 算術(shù)運(yùn)算問題(Arithmetic Problems) 106
4.2.1 周而復(fù)始的整數(shù)(int: Move in Cycles) 106
4.2.2 算法局限性(Algorithm Limitation) 107
4.2.3 中間結(jié)果溢出(Intermediate Result Overflow) 108
4.2.4 浮點(diǎn)數(shù)的比較(Floating-Point Number Comparison) 109
4.3 相容類型的轉(zhuǎn)換(Cast Compatible Types) 111
4.3.1 隱式轉(zhuǎn)換(Implicit Cast) 111
4.3.2 精度丟失(Lost Precision) 112
4.3.3 顯式轉(zhuǎn)換(Explicit Cast) 113
4.4 關(guān)系與邏輯操作(Relations & Logic Operations) 114
4.4.1 條件表達(dá)(Condition Expressing) 115
4.4.2 基本邏輯與短路求值(Basic Logic & Short-Circuit Evaluation) 117
4.4.3 邏輯推演(Logic Inference & Deduction) 118
4.5 位操作(Bit Operations) 119
4.5.1 位操作種類(The Kinds of Bit Operations) 119
4.5.2 位操作實(shí)例(Bit Operation Example) 120
4.6 增量操作(Increment Operations) 122
4.6.1 增量操作符(Increment Operator) 122
4.6.2 操作符識(shí)別(Operator Recognition) 123
4.6.3 指針的增量操作(Pointer Increment Operation) 124
4.7 表達(dá)式的副作用(Expression‘s Side Effects) 125
4.7.1 操作數(shù)求值順序(Operands Evaluating Order) 125
4.7.2 編譯器相關(guān)(Complier Correlated) 126
4.7.3 交換律失效(Commutation Law Invalidation) 127
4.7.4 括號(hào)失效(Bracket Invalidation) 127
4.7.5 消除副作用(Avoiding Side Effects) 128
4.8 目的歸納(Conclusion) 128
4.9 練習(xí)4(Exercises 4) 129
第二部分 過程化編程(PartⅡ The Procedural Programming)
第5章 函數(shù)機(jī)制(Function Mechanism) 134
5.1 函數(shù)性質(zhì)(Function Character) 134
5.1.1 函數(shù)的形態(tài)(The Function Forms) 134
5.1.2 函數(shù)黑盒(Function Blackbox) 136
5.1.3 傳值參數(shù)(Value-Passed Parameters) 137
5.2 指針參數(shù)(Pointer Parameters) 139
5.2.1 指針和引用參數(shù)(Pointer & Reference Parameters) 139
5.2.2 函數(shù)的副作用(Function‘s Side Effect) 142
5.3 棧機(jī)制(The Stack Mechanism) 145
5.3.1 運(yùn)行時(shí)內(nèi)存布局(Runtime Memory Layout) 145
5.3.2 棧區(qū)(The Stack Area) 145
5.3.3 局部數(shù)據(jù)的不確定性(Uncertainty of Local Data) 148
5.3.4 指針作祟(The Menacing Pointers) 149
5.4 函數(shù)指針(Function Pointers) 150
5.4.1 指向函數(shù)的指針(Function Pointers) 151
5.4.2 函數(shù)指針參數(shù)(Function Pointer Parameters) 152
5.4.3 函數(shù)指針數(shù)組(Function Pointer Arrays) 154
5.4.4 簡(jiǎn)略函數(shù)指針表示(The Outline of Function Pointers) 155
5.4.5 函數(shù)指針的意義(The Sense of Function Pointers) 156
5.5 main函數(shù)參數(shù)(The main‘s Arguments) 157
5.5.1 命令行重定向(Redirecting Command Line) 157
5.5.2 使用main參數(shù)(Using main Arguments) 158
5.6 遞歸函數(shù)(Recursive Functions) 161
5.6.1 遞歸本質(zhì)(Essence of Recursions) 161
5.6.2 遞歸條件(Condition of Recursions) 163
5.6.3 消去遞歸(Removing Recursions) 164
5.6.4 遞歸評(píng)說(shuō)(Comment on Recursions) 164
5.7 函數(shù)重載(Function Overload) 165
5.7.1 重載概念(Concept of Function Overload) 165
5.7.2 重載函數(shù)匹配(Overloaded Function Call Matches) 166
5.7.3 重載技術(shù)(Function Overload Technology) 167
5.7.4 默認(rèn)參數(shù)(Default Parameters) 168
5.7.5 默認(rèn)參數(shù)規(guī)則(Default Parameter Rules) 169
5.7.6 無(wú)名參數(shù)(Nameless Parameters) 170
5.7.7 重載或參數(shù)默認(rèn)(Overload or Parameter Default) 170
5.8 目的歸納(Conclusion) 172
5.9 練習(xí)5(Exercises 5) 173第6章 性能(Performance) 176
6.1 內(nèi)聯(lián)函數(shù)(Inline Functions) 177
6.1.1 概念(Concept) 177
6.1.2 規(guī)則(Rules) 179
6.1.3 性能測(cè)試(Performance Testing) 180
6.2 數(shù)據(jù)結(jié)構(gòu)(Data Structures) 181
6.2.1 STL中的容器(STL Container) 181
6.2.2 安排車廂順序(Arranging Carriage Order) 181
6.2.3 棧法(Stack Method) 182
6.2.4 向量法(Vector Method) 184
6.3 算法(Algorithms) 185
6.3.1 算法與性能(Algorithms & Performance) 185
6.3.2 Fibonacci數(shù)列算法分析(Fib‘s Algorithms Analyses) 185
6.3.3 選擇算法(Selecting Algorithms) 188
6.4 數(shù)值計(jì)算(Numerical Computation) 189
6.4.1 求解積分問題(Solving Integral Problems) 189
6.4.2 矩形法(Rectangle Method) 190
6.4.3 辛普生法(Simpson Method) 191
6.5 標(biāo)準(zhǔn)C++算法(Standard C++ Algorithms) 194
6.5.1 集合元素訪問(Element Access of set) 194
6.5.2 判斷字串相等1(Judging String Equal 1) 194
6.5.3 判斷字串相等2(Judging String Equal 2) 195
6.5.4 判斷字串相等3(Judging String Equal 3) 196
6.5.5 剩余串排列1(Arranging Remained String 1) 197
6.5.6 剩余串排列2(Arranging Remained String 2) 198
6.6 動(dòng)態(tài)內(nèi)存(Dynamic Memory) 199
6.6.1 預(yù)留向量空間(Reserving Vector Space) 199
6.6.2 蠻做素?cái)?shù)判斷(Judging Prime Foolhardily) 200
6.6.3 空間換時(shí)間(Trade Space for Time) 201
6.7 低級(jí)編程(Lower Programming) 202
6.7.1 C編程(C Programming) 202
6.7.2 低級(jí)篩法(Lower Sieve Solution) 204
6.7.3 篩法性能的比較(Comparing Sieves Performance) 206
6.8 目的歸納(Conclusion) 207
6.9 練習(xí)6(Exercises 6) 209第7章 程序結(jié)構(gòu)(Program Structure) 214
7.1 函數(shù)組織(Function Organization) 214
7.1.1 程序構(gòu)成(Program Composition) 214
7.1.2 程序文件拆分(Split up Program File) 216
7.2 頭文件(Header Files) 217
7.2.1 原始頭文件(Original Header File) 217
7.2.2 界面頭文件(Header File as Interface) 219
7.2.3 頭文件的內(nèi)容(Content of Header File) 220
7.3 全局?jǐn)?shù)據(jù)(Global Data) 221
7.3.1 全局?jǐn)?shù)據(jù)訪問(Global Data Access) 221
7.3.2 消除全局?jǐn)?shù)據(jù)(Removing Global Data) 223
7.3.3 一次定義原則(One-Definition Rule) 224
7.3.4 全局常量(Global Constant) 227
7.4 靜態(tài)數(shù)據(jù)(Static Data) 229
7.4.1 靜態(tài)全局?jǐn)?shù)據(jù)(Static Global Data) 229
7.4.2 靜態(tài)局部數(shù)據(jù)(Static Local Data) 231
7.5 作用域與生命期(Scopes & Lifetime) 232
7.5.1 作用域(Scopes) 232
7.5.2 生命期(LifeTime) 235
7.6 名空間(Namespace) 236
7.6.1 名空間的概念(Namespace Concept) 236
7.6.2 名空間的組織(Namespace Organization) 237
7.6.3 組織模塊(Module Organization) 239
7.6.4 數(shù)據(jù)名沖突(Data Name Clash) 242
7.6.5 名空間的用法(Using namespace) 243
7.7 預(yù)編譯(Pre-Compilation) 244
7.7.1 #include指令(#include) 244
7.7.2 條件編譯指令(Condition Compiling Directive) 245
7.7.3 頭文件衛(wèi)士(Header File Safeguard) 246
7.7.4 #define指令(#define) 246
7.8 目的歸納(Conclusion) 247
7.9 練習(xí)7(Exercises 7) 248
第三部分 面向?qū)ο缶幊碳夹g(shù)(Part III The Object-Oriented Programming)
第8章 類(Classes) 252
8.1 從結(jié)構(gòu)到類(From Structure to Class) 252
8.1.1 定義結(jié)構(gòu)(Defining Structure) 252
8.1.2 定義類(Defining Class) 255
8.2 成員函數(shù)(Member Functions) 257
8.2.1 成員函數(shù)定義(Member Function Definition) 257
8.2.2 使用對(duì)象指針(Using Object Pointer) 259
8.2.3 常成員函數(shù)(Const Member Functions) 260
8.2.4 重載成員函數(shù)(Overloading Member Functions) 261
8.3 操作符(Operators) 262
8.3.1 函數(shù)重載特征(Function Overloading Features) 262
8.3.2 性質(zhì)(Character) 264
8.3.3 值返回與引用返回(Returning Values or References) 265
8.3.4 增量操作符(Increment Operators) 266
8.3.5 成員操作符(Member Operators) 267
8.4 再論程序結(jié)構(gòu)(Program Structure Restatement) 269
8.4.1 訪問控制(Access Controls) 269
8.4.2 類的程序結(jié)構(gòu)(Program Structure with Classes) 270
8.4.3 類作用域(Class Scope) 272
8.5 屏蔽類的實(shí)現(xiàn)(Shield Class Implementations) 273
8.5.1 意義(Significance) 273
8.5.2 影響編程方法(Affecting Programming Method) 276
8.5.3 影響語(yǔ)言設(shè)計(jì)(Affecting Language Designing) 277
8.6 靜態(tài)成員(Static Members) 277
8.6.1 靜態(tài)數(shù)據(jù)成員(Static Data Members) 277
8.6.2 靜態(tài)成員函數(shù)(Static Member Functions) 280
8.7 友元(Friends) 281
8.7.1 頻繁調(diào)用問題(Frequent Calling Problems) 281
8.7.2 提高訪問性能(Improving Access Performance) 284
8.7.3 其他特征(Other Features) 286
8.8 目的歸納(Conclusion) 288
8.9 練習(xí)8(Exercises 8) 288第9章 對(duì)象生滅(Object Birth & Death) 293
9.1 構(gòu)造函數(shù)設(shè)計(jì)(Constructor Design) 293
9.1.1 初始化要求(Initialization Requirement) 293
9.1.2 封裝性要求(Encapsulation Requirement) 294
9.1.3 函數(shù)形式(Function Form) 295
9.1.4 無(wú)返回值(Non Return-Type) 296
9.1.5 set的缺憾(Disfigurement of set) 296
9.1.6 一次性對(duì)象(Only-One-Time Object) 298
9.2 構(gòu)造函數(shù)的重載(Constructor Overload) 298
9.2.1 重載構(gòu)造函數(shù)(Overload Constructor) 298
9.2.2 無(wú)參構(gòu)造函數(shù)(Non-Parameter Constructor) 301
9.3 類成員初始化(Class Member Initialization) 302
9.3.1 默認(rèn)調(diào)用的無(wú)參構(gòu)造函數(shù)(Default Calling Non-Parameter
Constructor) 302
9.3.2 初始化的困惑(Initialization Puzzle Dom) 304
9.3.3 成員的初始化(Initializing Members) 305
9.4 構(gòu)造順序(Constructing Order) 307
9.4.1 局部對(duì)象(Local Objects) 307
9.4.2 全局對(duì)象(Global Objects) 308
9.4.3 成員對(duì)象(Member Objects) 309
9.4.4 構(gòu)造位置(Constructing Position) 310
9.5 拷貝構(gòu)造函數(shù)(Copy Constructor) 311
9.5.1 對(duì)象本體與實(shí)體(Object Realty & Entity) 311
9.5.2 默認(rèn)拷貝構(gòu)造函數(shù)(Default Copy Constructor) 313
9.5.3 自定義拷貝構(gòu)造函數(shù)(User-Defined Copy Constructor) 315
9.6 析構(gòu)函數(shù)(Destructors) 316
9.7 對(duì)象轉(zhuǎn)型與賦值(Object Conversion & Assignment) 318
9.7.1 用于轉(zhuǎn)型的構(gòu)造函數(shù)(Constructor Used as Type Conversion) 318
9.7.2 對(duì)象賦值(Object Assignment) 320
9.8 目的歸納(Conclusion) 322
9.9 練習(xí)9(Exercises 9) 323第10章 繼承(Inheritance) 327
10.1 繼承結(jié)構(gòu)(Inheritance Structure) 327
10.1.1 類層次結(jié)構(gòu)(Class Hierarchy Structure) 327
10.1.2 派生類對(duì)象結(jié)構(gòu)(Derived Object Structure) 329
10.2 訪問父類成員(Access Father‘s Member) 330
10.2.1 繼承父類成員(Inherit Father‘s Member) 330
10.2.2 類內(nèi)訪問控制(Access Control in Class) 332
10.3 派生類的構(gòu)造(Constructing Derived Classes) 334
10.3.1 默認(rèn)構(gòu)造(Default Construction) 334
10.3.2 自定義構(gòu)造(User-Defined Construction) 334
10.3.3 拷貝構(gòu)造與賦值(Copy Construction & Assignment) 336
10.3.4 對(duì)象構(gòu)造順序(Object Constructing Order) 336
10.4 繼承方式(Inheritance Mode) 337
10.4.1 繼承訪問控制(Inheriting Access Control) 337
10.4.2 調(diào)整訪問控制(Adjusting Access Control) 340
10.5 繼承與組合(Inheritance & Composition) 341
10.5.1 對(duì)象結(jié)構(gòu)(Object Structure) 341
10.5.2 性質(zhì)差異(Character Differentiation) 341
10.5.3 對(duì)象分析(Object Analysis) 342
10.5.4 繼承設(shè)計(jì)(Inheritance Design) 344
10.5.5 組合設(shè)計(jì)(Composition Design) 345
10.6 多繼承概念(Multi-Inheritance Concept) 347
10.6.1 多繼承結(jié)構(gòu)(Multi-Inheritance Structure) 347
10.6.2 基類成員名沖突(Base-Class Member Name Collision) 348
10.6.3 基類分解(Base-Class Decomposition) 349
10.7 多繼承技術(shù)(Multi- Inheritance Technology) 350
10.7.1 虛擬繼承(Virtual Inheritance) 350
10.7.2 多繼承對(duì)象構(gòu)造順序(Multi-Inheritance Object Constructing Order) 352
10.7.3 多繼承評(píng)價(jià)(Multi-Inheritance Evaluation) 352
10.8 目的歸納(Conclusion) 353
10.9 練習(xí)10(Exercises 10) 354第11章 基于對(duì)象編程(Object-Based Programming) 356
11.1 抽象編程(Abstract Programming) 357
11.1.1 行為抽象(Action Abstract) 357
11.1.2 數(shù)據(jù)抽象(Data Abstract) 358
11.1.3 數(shù)據(jù)結(jié)構(gòu)(Data Structure) 359
11.2 編程質(zhì)量(Programming Quality) 360
11.2.1 可讀性(Readability) 360
11.2.2 易編程性(Programability) 361
11.2.3 安全性(Safety) 362
11.2.4 可維護(hù)性(Maintainability) 362
11.2.5 可擴(kuò)充性(Extensibility) 363
11.2.6 效率(Efficiency) 363
11.3 分析Josephus問題(Analysis the Josephus Problem) 365
11.3.1 問題描述(Problem Description) 365
11.3.2 過程化分析(Procedure Analysis) 365
11.3.3 基于對(duì)象的分析(Object-Based Analysis) 367
11.4 基于過程的解決方案(Procedure-Based Solution) 368
11.4.1 算法(The Algorithm) 368
11.4.2 算法解釋(Algorithm Explanation) 369
11.4.3 算法實(shí)現(xiàn)(Algorithm Implementation) 370
11.5 基于對(duì)象的解決方案(Object-Based Solution) 372
11.5.1 算法(The Algorithm) 372
11.5.2 算法解釋(Algorithm Explanation) 373
11.5.3 算法實(shí)現(xiàn)(Algorithm Implementation) 375
11.5.4 程序解釋(Program Explanation) 378
11.6 程序維護(hù)(Program Maintenance) 379
11.7 程序擴(kuò)展(Program Extension) 381
11.8 目的歸納(Conclusion) 384
11.9 練習(xí)11(Exercises 11) 385
第四部分 高級(jí)編程(Part Ⅳ The Advanced Programming)
第12章 多態(tài)(Polymorphism) 388
12.1 繼承召喚多態(tài)(Inheritance Summon up Polymorphism) 388
12.1.1 祖孫互易的說(shuō)明(Explaining Up & Down Exchanging) 388
12.1.2 覆蓋父類操作(Overlapping Superclass Operation) 389
12.1.3 同化效應(yīng)(Assimilation Effect) 391
12.1.4 渴望多態(tài)(Thirsting for Polymorphism) 392
12.2 抽象編程的困惑(Abstract Programming Perplexity) 393
12.2.1 類型域方案(Type Fields Scheme) 393
12.2.2 破壞抽象編程(Destroy Abstract Programming) 395
12.2.3 渴望內(nèi)在的多態(tài)(Thirsting for Inner Polymorphism) 396
12.3 虛函數(shù)(Virtual Function) 396
12.3.1 多態(tài)條件(Polymorphism Condition) 396
12.3.2 虛函數(shù)機(jī)理(Virtual Function Mechanism) 397
12.3.3 面向?qū)ο蟮恼嬉猓∣bject-Oriented Intendment) 398
12.3.4 虛函數(shù)的傳播(Spreading Virtual Functions) 399
12.4 避免虛函數(shù)誤用(Avoiding Misuse of Virtual Function) 400
12.4.1 搞清重載與覆蓋(Making Clear on Overload & Overlap) 400
12.4.2 返回類型的例外(Exception of Return Type) 401
12.4.3 若干限制(Restrictions) 403
12.5 精簡(jiǎn)共性的類(Simplify Class with Generality) 404
12.5.1 孤立的類(Isolated Classes) 404
12.5.2 減少冗余代碼(Reducing Verbose Code) 407
12.5.3 改變基類殃及子類(SubClass Suffered by Modifying Base-Class) 410
12.6 多態(tài)編程(Polymorphic Programming) 410
12.6.1 共同基類方案(Shared Base-Class Scheme) 410
12.6.2 自定義鏈表類(User-Defined Linked List Class) 414
12.6.3 表現(xiàn)多態(tài)(Polymorphism Showing) 416
12.7 類型轉(zhuǎn)換(Type Conversions) 417
12.7.1 動(dòng)態(tài)轉(zhuǎn)型(dynamic_cast) 417
12.7.2 靜態(tài)轉(zhuǎn)型(static_cast) 419
12.7.3 常量轉(zhuǎn)型(const_cast) 420
12.8 目的歸納(Conclusion) 421
12.9 練習(xí)12(Exercises 12) 422第13章 抽象類(Abstract Class) 424
13.1 抽象基類(Abstract Base-Class) 424
13.1.1 無(wú)意義的基類對(duì)象(Nonsensical Base-Class Objects) 424
13.1.2 純虛函數(shù)(Pure Virtual Functions) 425
13.2 抽象類與具體類(Abstract & Concrete Classes) 426
13.3 深度隔離的界面(Deeply Parted Interface) 429
13.3.1 日期的年月日版本(Year-Month-Day of Date VER) 429
13.3.2 日期的天數(shù)版本(Day-Number of Date VER) 430
13.3.3 應(yīng)用程序界面(Application Interface) 432
13.4 抽象類做界面(Abstract Class As Interface) 434
13.4.1 抽象基類方案(The Abstract Base-Class Scheme) 434
13.4.2 抽象基類IDate(Abstract Base-Class IDate) 435
13.4.3 創(chuàng)建Date對(duì)象(Creating Date Objects) 436
13.4.4 子類Date(Subclass Date) 437
13.4.5 應(yīng)用系統(tǒng)編程技術(shù)(Application Programming) 438
13.5 演繹概念設(shè)計(jì)(Deducting Concept Design) 440
13.5.1 面向?qū)ο蟮哪K(Object-Oriented Module) 440
13.5.2 Sony類層次結(jié)構(gòu)(Class Sony Hierarchy) 440
13.5.3 Sony類定義(Defining Class Sony) 442
13.5.4 CreateSony類層次結(jié)構(gòu)(Class CreateSony Hierarchy) 445
13.5.5 CreateSony的子類定義(Defining Class CreateSony) 447
13.5.6 應(yīng)用系統(tǒng)編程技術(shù)(Application Programming) 449
13.6 系統(tǒng)擴(kuò)展(System Extension) 451
13.6.1 新添一個(gè)界面(Adding One Interface) 451
13.6.2 新添一種技術(shù)(Adding One Technology) 453
13.7 手柄(Handle) 455
13.7.1 對(duì)象指針問題(Object Pointer Problem) 455
13.7.2 對(duì)象指針的外套(The Coat of Object Pointer) 456
13.7.3 可用的手柄類(Usable Handle) 457
13.8 目的歸納(Conclusion) 459
13.9 練習(xí)13(Exercises 13) 459第14章 模板(Templates) 461
14.1 函數(shù)模板(Function Templates) 461
14.1.1 函數(shù)重載的困惑(Function Overload Perplexity) 461
14.1.2 函數(shù)模板的定義(Defining Function Template) 462
14.1.3 函數(shù)模板的用法(Using Function Templates) 463
14.2 函數(shù)模板參數(shù)(Function Template Parameters) 465
14.2.1 苛刻的類型匹配(Rigorous Type Match) 465
14.2.2 數(shù)據(jù)形參(Data Arguments) 466
14.2.3 常量引用型形參(const Reference Arguments) 466
14.2.4 引用型形參(Reference Arguments) 467
14.2.5 函數(shù)模板重載(Function Template Overloading) 468
14.3 類模板(Class Templates) 470
14.3.1 容器類的困惑(Container Class Perplexity) 470
14.3.2 類模板定義(Class Template Definition) 471
14.3.3 類模板的實(shí)現(xiàn)(Class Template Implementation) 472
14.3.4 模板類和類模板(Template Class & Class Templates) 474
14.3.5 模板值參數(shù)(Template Value Parameters) 475
14.3.6 默認(rèn)模板實(shí)參(Default Template Parameters) 475
14.4 實(shí)例化與定做(Instantiation & Specialization) 476
14.4.1 模塊實(shí)例化(Template Instantiation) 476
14.4.2 定做(Specialization) 477
14.4.3 局部定做(Partial Specialization) 480
14.5 程序組織(Program Organization) 481
14.5.1 包含方式(Inclusion Mode) 481
14.5.2 分離方式(Separation Mode) 483
14.6 模板的多態(tài)(Template Polymorphism) 486
14.6.1 動(dòng)多態(tài)與靜多態(tài)(Dynamic & Static Polymorphism) 486
14.6.2 動(dòng)多態(tài)編程(Dynamic Polymorphism Programming) 486
14.6.3 靜多態(tài)編程(Static Polymorphism Programming) 489
14.6.4 動(dòng)靜多態(tài)的差異(Dynamic & Static Polymorphism Differentiation) 490
14.7 高級(jí)編程(Advanced Programming) 490
14.7.1 動(dòng)多態(tài)設(shè)計(jì)模式(Dynamic Polymorphism Design Patterns) 490
14.7.2 靜多態(tài)設(shè)計(jì)模式(Static Polymorphism Design Patterns) 492
14.7.3 泛型編程(Generic Programming) 494
14.8 目的歸納(Conclusion) 496
14.9 練習(xí)14(Exercises14) 496第15章 異常(Exception) 498
15.1 錯(cuò)誤處理的復(fù)雜性(Error Processing Complexity) 498
15.1.1 錯(cuò)誤種類(Kinds of Errors) 498
15.1.2 模塊的隔絕性(Isolated Modular) 499
15.1.3 調(diào)用鏈的牽制(Call-Link‘s Hold down) 500
15.2 使用異常(Using Exception) 502
15.2.1 異常使用三部曲(Three Steps on Using Exception) 503
15.2.2 退化為普通錯(cuò)誤處理(Becoming General Error Handling) 503
15.2.3 跨越函數(shù)的異常處理(Supario Function Exception Handling) 504
15.2.4 標(biāo)準(zhǔn)異常的用法(Using Standard Exception) 505
15.3 捕捉異常(Catching Exception) 506
15.3.1 類型匹配(Type Match) 506
15.3.2 撒網(wǎng)捕捉(Exception Catch Net) 508
15.4 異常的申述(Exception Description) 511
15.4.1 申述異常(Description Exception) 511
15.4.2 捉不住處理(Uncaught Handling) 514
15.5 異常繼承體系(Exception Inheritance System) 515
15.5.1 異常類層次結(jié)構(gòu)(Exception Class Hierarchy) 515
15.5.2 異常類層次結(jié)構(gòu)的用法(Using Exception Class Hierarchy) 516
15.6 異常的應(yīng)用(Exception Applications) 519
15.6.1 構(gòu)造函數(shù)的錯(cuò)誤處理(Constructor Error Processing) 519
15.6.2 引用的動(dòng)態(tài)轉(zhuǎn)型(Reference dynamic_cast) 521
15.6.3 typeid的用法(Using typeid) 522
15.7 非錯(cuò)誤處理(Non-Error Processing) 523
15.7.1 另一種循環(huán)控制法(Another Loop Controlling) 523
15.7.2 遞歸控制法(Recursive Controlling) 525
15.8 目的歸納(Conclusion) 526
15.9 練習(xí)15(Exercises 15) 527
附錄(Appendices)
附錄A 語(yǔ)法導(dǎo)讀(Guide to Grammar) 532
A.1 C++語(yǔ)言文法(C++ Language Grammar) 532
A.2 語(yǔ)法圖(Grammar Graph) 532
A.3 Barcus范式(Barcus Normal Form,BNF) 534
A.4 C++關(guān)鍵字(C++ Keywords) 535
A.5 整數(shù)文法(Integer Grammar) 536
A.6 浮點(diǎn)數(shù)文法(Floating-Point Number Grammar) 537
A.7 編譯單位(Compiling Unit) 538附錄B 標(biāo)準(zhǔn)模板庫(kù)導(dǎo)用(Guide to Using STL) 539
B.1 仿函數(shù)與算法(Function Object & Algorithm) 539
B.2 STL仿函數(shù)(STL Default Function Objects) 545
B.3 謂詞(Predicates) 546
B.4 函數(shù)配接器(Function Adapters) 547
B.5 插入遍歷器和流遍歷器(Insert & Stream Iterator) 549附錄C 參考文獻(xiàn)(References) 550

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)