本書由在計算機程序設(shè)計方面有著豐富教學(xué)和實踐經(jīng)驗的中外作者合作編寫,并在其第2版的基礎(chǔ)上進行了修訂與更新。本書內(nèi)容共14章,由淺入深、全面介紹了C++程序設(shè)計方法。本書通俗易懂,所有實例經(jīng)過精心挑選、貼近生活,尤其強調(diào)讀者的親自參與意識。大多數(shù)章都為初學(xué)者提供了常見錯誤分析,所選習(xí)題可提高讀者上機編程的興趣。本書是國內(nèi)首次出版的中英文對照混排式雙語版C++程序設(shè)計教材的更新版,既方便初學(xué)者熟悉相關(guān)概念和內(nèi)容,也便于英語非母語的讀者熟悉英文專業(yè)詞匯。本書可作為高等學(xué)校計算機、軟件工程和其他理工類專業(yè)的C++程序設(shè)計雙語版教材,也可供程序員和編程愛好者參考使用。
Paul Kelly,愛爾蘭都柏林理工大學(xué)(TUD)的高級講師Paul Kelly。Kelly 老師長期從事程序設(shè)計類課程的教學(xué)工作,在程序設(shè)計類課程教學(xué)方面教學(xué)實踐經(jīng)驗豐富,在國外已先后出版多本程序設(shè)計語言類書籍。蘇小紅,哈爾濱工業(yè)大學(xué)計算機學(xué)院博士生導(dǎo)師,計算機應(yīng)用技術(shù)專家,研究領(lǐng)域主要是色彩匹配,信息融合,空間計算,人工神經(jīng)網(wǎng)絡(luò),進化算法,計算機圖形學(xué),灰色預(yù)測,彩色圖像處理等。
目??錄
Chapter One Typographic Conventions(緒論) 1
1.1?What is a computer program? (什么是計算機程序?) 1
1.2?Developing a computer program(開發(fā)計算機程序) 2
1.2.1?Program development cycle 2
1.3?Learning C++(學(xué)習(xí)C++) 4
1.4?Web site for this book(本書的網(wǎng)站) 4
1.5?Brief history of C++(C++簡史) 4
1.6?ANSI/ISO C++ standard(ANSI/ISO C++標準) 5
Chapter Two Beginning to Program in C++(C++編程入門) 6
2.1?Constants(常量) 6
2.2?Variables(變量) 6
2.3?Simple output to the screen(簡單的屏幕輸出) 7
2.4?Comments(注釋) 9
2.5?Data types(數(shù)據(jù)類型) 10
2.5.1?Short integer data types 10
2.5.2?Long integer data types 10
2.5.3?Boolean data types 11
2.5.4?Double floating-point data types 11
2.5.5 Unsigned integer data types 11
2.6?Data type sizes(數(shù)據(jù)類型的大。 11
2.7?Operators (運算符) 12
2.7.1?The assignment operator 12
2.7.2?Arithmetic operators 12
2.7.3?Increment and decrement operators 13
2.7.4?Combined assignment operators 15
2.8?Operator precedence(運算符的優(yōu)先級) 16
2.9?Data type conversions and casts(類型轉(zhuǎn)換和強轉(zhuǎn)) 18
Programming pitfalls 20
Quick syntax reference 21
Exercises 22
Chapter Three Keyboard Input and Screen Output(鍵盤輸入和屏幕輸出) 26
3.1?Simple keyboard input(簡單的鍵盤輸入)? 26
3.2?Manipulators(流操縱符) 28
3.3?Single-character input and output(單個字符的輸入和輸出) 30
Programming pitfalls 32
Quick syntax reference 32
Exercises 32
Chapter Four Selection and Iteration(選擇與循環(huán)) 34
4.1?Selection(選擇) 34
4.1.1?The if statement 34
4.1.2?The if-else statement 35
4.1.3?Compound statements 36
4.1.4?Logical operators 37
4.1.5?Nested if statements? 37
4.1.6?The switch statement 37
4.1.7?The conditional operator ?: 39
4.2?Iteration(循環(huán)) 40
4.2.1?The while statement 40
4.2.2?The do-while loop? 42
4.2.3?The for statement? 43
4.2.4?Nested loops 45
Programming pitfalls 47
Quick syntax reference 49
Exercises 50
Chapter Five Arrays and Structures(數(shù)組和結(jié)構(gòu)體) 53
5.1?Arrays(數(shù)組) 53
5.1.1?Introduction 53
5.1.2?Initialising an array 56
5.1.3?Two-dimensional arrays? 57
5.1.4?Initialising a two-dimensional array 59
5.1.5?Multi-dimensional arrays 60
5.2?Structures(結(jié)構(gòu)體) 60
5.2.1?Introduction 60
5.2.2?Declaring a structure 61
5.2.3?Initialising a structure variable 63
5.2.4?Nested structures 64
5.3?The typedef statement(typedef 語句) 65
5.4?Arrays of structures(結(jié)構(gòu)體數(shù)組) 66
5.5?Enumerated data types(枚舉數(shù)據(jù)類型) 66
Programming pitfalls 68
Quick syntax reference 68
Exercises 69
Chapter Six Strings(字符串) 72
6.1?C-strings(C風(fēng)格字符串) 72
6.2?C-string input and output(C風(fēng)格字符串的輸入和輸出) 73
6.3?Accessing individual characters of a C-string(訪問C風(fēng)格字符串中的單個字符) 77
6.4?C-string functions(C風(fēng)格字符串函數(shù)) 77
6.4.1?Finding the length of a C-string 78
6.4.2?Copying a C-string 78
6.4.3?C-string concatenation 79
6.4.4?Comparing C-strings 79
6.4.5?Other C-string functions 79
6.4.6?Converting numeric C-strings to numbers 80
6.5?C++ strings(C++ 字符串) 80
6.5.1?String initialisation and assignment 82
6.5.2?String concatenation 84
6.5.3?String length, string indexing and sub-strings 85
6.5.4?String replace, erase, insert and empty strings 86
6.5.5?String searching 88
6.5.6?String comparisons 89
6.5.7?String input 91
6.5.8?String conversions 92
6.6?Arrays of strings(string 類型的數(shù)組) 93
6.7?Character classification(字符分類) 94
Programming pitfalls 96
Quick syntax reference 96
Exercises 97
Chapter Seven Functions(函數(shù)) 100
7.1?Introduction(引言) 100
7.2?Function arguments(函數(shù)實參) 102
7.3?Default parameter values(默認的形參值) 105
7.4?Returning a value from a function(從函數(shù)返回一個值) 106
7.5?Inline functions(內(nèi)聯(lián)函數(shù)) 107
7.6?Passing arguments by value(按值傳遞實參) 108
7.7?Passing arguments by reference(按引用傳遞實參) 109
7.8?Passing a one-dimensional array to a function(向函數(shù)傳遞一維數(shù)組) 112
7.9?Passing a multi-dimensional array to a function(向函數(shù)傳遞多維數(shù)組) 115
7.10?Passing a structure variable to a function(向函數(shù)傳遞結(jié)構(gòu)體變量) 116
7.11?Passing a string to function(向函數(shù)傳遞字符串) 118
7.11.1?Passing a C++ string to a function 118
7.11.2?Passing a C-string to a function 119
7.12?Recursion(遞歸) 120
7.13?Function overloading(函數(shù)重載) 122
7.14?Storage classes auto and static (auto 和 static 存儲類型) 123
7.14.1?auto 123
7.14.2?static 124
7.15?The scope of a variable(變量的作用域) 125
7.15.1?Block scope 125
7.15.2?Global scope 126
7.15.3?Reusing a variable name 127
7.16?Mathematical functions(數(shù)學(xué)函數(shù)) 129
7.16.1?Some trigonometric functions 129
7.16.2?Pseudo-random number functions 130
Programming pitfalls 132
Quick syntax reference 132
Exercises 133
Chapter Eight Objects and Classes(對象和類) 137
8.1?What is an object? (什么是對象?) 137
8.2?What is a class? (什么是類?) 137
8.3?Further examples of classes and objects(類和對象的更進一步的示例) 140
8.3.1?A student class 140
8.3.2?A bank account class 140
8.4?Abstraction(抽象) 141
8.5?Constructing a class in C++(用C++構(gòu)造一個類) 142
8.6?Using a class: defining and using objects(使用類:定義和使用對象) 144
8.7?Abstract data types(抽象數(shù)據(jù)類型) 145
8.8?Constructors(構(gòu)造函數(shù)) 146
8.9?Default class constructor(默認的類構(gòu)造函數(shù)) 148
8.10?Overloading class constructors(重載類構(gòu)造函數(shù)) 149
8.11?Constructor initialisation lists(構(gòu)造函數(shù)初始化列表) 151
8.12?Default argument values in a constructor(構(gòu)造函數(shù)中的默認實參值) 152
8.13?static class data members(靜態(tài)類數(shù)據(jù)成員) 154
8.14?Using return statement in a member function(在成員函數(shù)中使用return語句) 157
8.15?Inline class member functions(內(nèi)聯(lián)成員函數(shù)) 159
8.16?Class interface and class implementation(類的接口和類的實現(xiàn)) 160
8.16.1?Separation of class interface and class implementation 162
8.16.2?Use of namespaces in header files 164
Programming pitfalls 167
Quick syntax reference 167
Exercises 167
Chapter Nine Pointers and Dynamic Memory(指針和動態(tài)內(nèi)存分配) 171
9.1?Variable addresses(變量的地址) 171
9.2?Pointer variables(指針變量) 172
9.3?The dereference operator *(解引用運算符*) 173
9.4?Using const with pointers(使用const 修飾指針變量) 174
9.5?Pointers and one-dimensional arrays(指針和一維數(shù)組) 175
9.6?Pointers and multi-dimensional arrays(指針和多維數(shù)組) 177
9.7?Pointers to structures(指向結(jié)構(gòu)體的指針) 178
9.8?Pointers to class objects(指向類對象的指針) 179
9.9?Pointers as function arguments(指針變量作為函數(shù)實參) 180
9.10?Dynamic memory allocation(動態(tài)內(nèi)存分配) 182
9.10.1?Allocating memory dynamically for an array 183
9.10.2?Initialisation with new 184
9.10.3?Allocating memory for multi-dimensional arrays 186
9.10.4?Out of memory error 187
Programming pitfalls 189
Quick syntax reference 190
Exercises 190
Chapter Ten Operator Overloading(運算符重載) 193
10.1?The need for operator overloading(運算符重載的必要性) 193
10.2?Overloading the addition operator +(重載加法運算符+) 193
10.3?Rules of operator overloading(運算符重載的規(guī)則) 200
10.4?Overloading ++(重載運算符++) 200
10.4.1?Overloading prefix and postfix forms of ++ 203
10.4.2?Improving the prefix ++ operator member function 206
10.5?Overloading relational operators(重載關(guān)系運算符) 206
10.6?Overloading << and >> (重載運算符<<和>>) 209
10.7?Conversion operators(轉(zhuǎn)換運算符) 214
10.8?Use of friend functions(使用友元函數(shù)) 217
10.9?Overloading the assignment operator =(重載賦值運算符=) 218
10.9.1?A class with a pointer data member 218
10.9.2?Assigning one object to another 220
10.10?The copy constructor(拷貝構(gòu)造函數(shù)) 229
10.11?Overloading the index operator [](重載下標運算符[ ]) 233
Programming pitfalls 236
Quick syntax reference 237
Exercises 237
Chapter Eleven Inheritance(繼承) 240
11.1?What is inheritance? (什么是繼承?) 240
11.2?Inheritance syntax(繼承語法) 241
11.3?Passing arguments to a base class constructor(向基類的構(gòu)造函數(shù)傳遞實參) 249
11.4?Protected class members(受保護的類成員) 253
11.5?Types of inheritance: public, protected and private(繼承的類型:public、
protected和private) 256
11.6?Composition(組合) 258
11.7?Multiple inheritance(多重繼承) 259
11.8?Virtual base classes(虛基類) 262
Programming pitfalls 265
Quick syntax reference 265
Exercises 266
Chapter Twelve Polymorphism(多態(tài)) 271
12.1?What is polymorphism? (什么是多態(tài)?) 271
12.2?Virtual functions(虛函數(shù)) 274
12.2.1?When to use virtual functions 279
12.2.2?Overriding and overloading 279
12.3?Abstract base classes(抽象基類) 280
Programming pitfalls 284
Quick syntax reference 284
Exercises 285
Chapter Thirteen Templates(模板) 288
13.1?Introduction(引言) 288
13.2?Function templates(函數(shù)模板) 288
13.3?Class templates(類模板) 292
Programming pitfalls 297
Quick syntax reference 297
Exercises 297
Chapter Fourteen Files and Streams(文件和流) 300
14.1?The C++ input/output class hierarchy(C++輸入/ 輸出類的層次結(jié)構(gòu)) 300
14.2?Opening a file(打開文件) 301
14.3?File error checking(文件出錯檢查) 303
14.4?Single character I/O and detecting the end of a file(單字符的I/O和文件末尾
的檢測) 304
14.5?Appending data to the end of a file(向文件末尾添加數(shù)據(jù)) 308
14.6?Reading lines from a file(從文件中讀取行) 309
14.7?Random access(隨機存。 310
14.8?Object I/O(對象I/O) 313
14.9?Binary I/O(二進制I/O) 314
14.9.1?Serial writing of objects to a binary file 315
14.9.2?Serial reading of objects from a binary file 319
14.9.3?Binary I/O as class member functions 320
14.9.4?Binary file random access 321
Programming pitfalls 325
Quick syntax reference 325
Exercises 326
Appendix A List of C++ Keywords 329
Appendix B Precedence and Associativity of C++ Operators 330
Appendix C ASCII Character Codes 332
Appendix D Fundamental C++ Built-in Data Types 334
Appendix E Common iomanip Manipulators 335
Appendix F Escape Sequences 336
Appendix G The C++ Preprocessor 337