书籍详情
现代C++程序设计
作者:(美)Barbara Johnston著;曾葆青,丁晓非等译;曾葆青译
出版社:清华大学出版社
出版时间:2005-08-01
ISBN:9787302108054
定价:¥58.00
购买这本书可以去
内容简介
本书用简单通俗的语言,细腻生动地介绍了C++语言和面向对象程序设计技术。全书图文并茂,易学易懂,真正做到了寓教于乐,是一本难得的C++面向对象设计入门教材。本书特色如下: 深入浅出地讲解了基本概念和各种重点难点,并配合大量趣味生动的案例。 每章开头给出了重要术语、概念和学习内容,每章后面部分给出了程序排错指南。 很多案例既给出了源代码,也列举了常见错误,以及编译器产生的出错信息。 各种技巧方法和注意事项被总结成易于查阅的表格。 课后练习类型丰富,循序渐进,难度和规模适中。 附录部分内容独特,信息丰富。 本书提供全部案例的源代码(可从www.tup.com.cn下载)。 本书有配套的《教师手册》、《实验手册》及教学配套网站(详见前言中的说明)。 本书的读者对象是高校计算机系及软件学院低年级学生、非计算机专业软件工程硕士、计算机专业二学位和双学位、非计算机专业的计算机语言公共选修课不生,以及计算机业余爱好者。
作者简介
曾葆青,大连理工大学软件学院地教师,毕业于北京大学。曾留学美国,程序员出身。有多年IT业工作经验和大学教育经验。目前在大连理工大学软件学院主讲C++程序设计、C++高编编程、面向对角程序设计、面向对象的分析和设计、C#.NET、C#高级应用、ASP.NET高级编程、Web Services、数 据结构与算法等多门课程和专题技术。教学内容丰富、生动,深受学生喜爱。主要研究领域为符号计算技术。
目录
第1章C++与软件开发1
欢迎来到C++的世界2
1.1什么是C,什么是C++4
1.1.1C和C++发展简史5
1.1.2C/C++是编译语言5
1.1.3为什么程序员们喜欢C++6
1.2什么是面向对象7
1.2.1C++程序不是自动面向对象的7
1.2.2一个简单的面向对象程序案例7
1.2.3面向对象的软件更受欢迎8
1.3结构化设计与面向对象设计9
1.3.1ATM的结构化方法9
1.3.2ATM的面向对象方法9
1.4软件开发技术简介11
1.4.1如何不编程11
1.5找错12
1.5.1我的程序哪儿出了错12
复习题与作业13
简答题13
作业13
第2章C++入门: 数据类型、变量、操作符、算术、简单输入输出14
软件开发简介15
2.1编程基础15
2.1.1算法设计15
2.1.2走成功编程之路17
2.1.3练习: 如何给猫洗澡17
2.1.4三分原则18
2.1.5如何编程19
2.2术语及项目的建立19
2.2.1项目的建立步骤20
2.3C++程序的一般格式21
2.3.1Hello World!程序21
2.3.2注释21
2.3.3预处理指令22
2.3.4main函数22
2.3.5函数首行22
2.3.6C++语句23
2.3.7气象信息23
2.3.8空白字符与C++灵活的编程风格24
2.3.9语法与编译错误25
2.3.10C++关键字26
2.3.11大小写敏感27
2.3.12好的编程风格27
2.3.13坚持好的风格27
2.3.14关于程序中的注释28
2.4程序与数据: 球与球拍28
2.5C++中的数据类型29
2.5.1物品架=内存,容器=数据类型,标签=变量名30
2.5.2数据类型修饰符31
2.5.3找错: 整数有多大31
2.6C++中的变量声明32
2.6.1C++中的命名规则33
2.6.2在哪里声明变量33
2.7C++中的操作符34
2.7.1操作的优先级34
2.7.2赋值操作符35
2.7.3算术操作符36
2.7.4自增量和自减量操作符41
2.7.5累计操作符42
2.7.6C++中的其他操作符43
2.8其他话题: #define、const和数据类型转换43
2.8.1#define43
2.8.2const修饰符44
2.8.3const优于#define吗45
2.8.4数据类型转换46
2.9键盘输入和屏幕输出48
2.10练习48
2.10.1找错: 赋值操作的摆放位置48
2.10.2计算圆柱体的体积49
2.10.3求余和距离换算50
2.10.4将字符数据表示为十进制、十六进制、八进制数,流格式化51
复习题与作业51
简答题51
程序改错题52
代码阅读53
编程题54
第3章控制语句和循环55
判断,还是判断56
3.1关系操作符和逻辑操作符56
3.1.1表达式求值和操作符优先级57
3.2if语句59
3.2.1if else语句60
3.2.2if语句中的括号错误61
3.2.3if—else if—else语句62
3.2.4低效率编程方法64
3.2.5if else: This Old Man编程举例65
3.2.6嵌套if else语句66
3.2.7“?”操作符67
3.3switch语句68
3.3.1找错: 不要忘了break69
3.4循环语句概述70
3.4.1加括号还是不加括号70
3.4.2无法跳出无穷循环71
3.5for循环71
3.5.1不要更改循环指标72
3.5.2for循环举例73
3.6while循环74
3.6.1while循环举例75
3.7do while循环76
3.7.1do while举例77
3.8排除错误79
3.8.14种常见错误79
3.8.2找错: 循环无法中止80
3.8.3找错: 分号和括号82
3.8.4找错: 放错位置的else、非法else、文件不完整错误83
3.8.5调试程序84
3.9总结84
3.9.1缩进原则86
3.10练习86
3.10.1时间转换87
3.10.2数89
3.10.3输出图案90
复习题与作业92
简答题92
找错题: 编译错误93
找错题: 运行期错误93
代码阅读95
编程题95
第4章指针、地址、间接寻址操作符97
泊车与指针98
4.1指针的重要性98
4.2变量与内存98
4.2.1sizeof操作符99
4.2.2分配内存100
4.2.3计算机内存与十六进制数101
4.3取地址操作符&102
4.4指针104
4.4.1指针与取地址操作符104
4.4.2小红帽与白宫106
4.4.3指针与间接寻址操作符106
4.4.4指针类型混用109
4.5指针有什么用110
4.5.1C++中的函数只返回一个值110
4.5.2高效处理大数据结构、数组、类111
4.6总结112
4.6.1指针: 早学,勤练113
4.7练习113
4.7.1问候与指针113
4.7.2“This Old Man”与指针114
4.7.3金字塔的体积与指针115
复习题与作业116
简答题116
代码阅读116
找错题117
编程题118
第5章函数第I部分: 基本概念119
盖房子与开发软件120
5.1C++中的函数120
5.1.1使用函数之前120
5.1.2有了函数以后121
5.1.3使用函数有很多优点122
5.2函数的基本格式122
5.2.14个简单函数例子123
5.2.2调用函数与被调函数124
5.3写函数的要求125
5.3.1计算年龄125
5.3.2函数原型126
5.3.3函数调用127
5.3.4函数首行与函数体127
5.3.5传值调用129
5.3.6再看一个例子130
5.3.7回顾函数的一般形式132
5.3.8找错: 类型失配133
5.3.9找错: 调用语句中的数据类型134
5.3.10函数使用要求与C++库135
5.4局部变量、静态变量、全局变量135
5.4.1局部变量136
5.4.2找错: 忘记声明变量136
5.4.3静态变量137
5.4.4全局变量138
5.4.5全局变量是危险的139
5.4.6找错: 全局变量y1和math.h139
5.5指针与函数141
5.5.1传值调用复习141
5.5.2函数返回两个值142
5.5.3指针复习142
5.5.4传引用调用: 将变量地址传给函数143
5.6总结145
5.7练习146
5.7.1素数146
5.7.2随机数150
5.7.3时间转换151
5.7.4猫和狗152
复习题与作业155
简答题155
代码阅读156
程序找错题157
编程题157
第6章数组159
跑得更快,跳得更高160
6.1使用单数据变量160
6.2数组基础161
6.2.1C++中的数组下标从零开始162
6.2.2数组不被自动初始化162
6.2.3初始化一维数组162
6.2.4for循环与数组163
6.3数组的伴随指针165
6.3.1数组指针165
6.4一维数组和函数166
6.4.1数组与数组指针167
6.4.2向函数传递一维数组167
6.4.3求数组元素的平均值168
6.4.4找错: 不能从函数中“返回”数组169
6.5字符数组172
6.5.1字符数组的初始化173
6.5.2空字符173
6.5.3输入字符串175
6.5.4读取数值和字符数据181
6.5.5C++中的字符串函数183
6.6多维数组184
6.6.1二维数组的初始化185
6.6.2嵌套for循环和二维数组186
6.6.3二维数组的应用: 水电杂费计算程序186
6.7多维数组与函数188
6.7.1重新设计水电杂费计算程序188
6.7.2白雪公主: 用二维数组存储姓名190
6.8数组下标越界190
6.8.1数组下标越界等于灾难192
6.9从文件中读数据192
6.10总结192
6.11练习194
6.11.1常用单词194
6.11.2气象信息195
复习题与作业199
简答题199
找错题: 编译错误199
找错题: 运行期错误200
编程题201
第7章用户定义的数据类型、结构与枚举204
建城堡205
7.1用户定义的数据类型205
7.1.1将数据分组205
7.1.2结构与枚举206
7.2结构206
7.2.1数据类型基本概念回顾206
7.2.2创建并声明结构207
7.2.3结构说明208
7.2.4无名结构209
7.3访问结构成员210
7.3.1方框图210
7.3.2访问结构成员210
7.4结构数组213
7.4.1结构数组举例213
7.5结构中的结构216
7.5.1使用了时间结构的竞赛程序216
7.5.2嵌套了两个结构的结构217
7.6复制结构219
7.7结构与函数220
7.7.1时间结构举例221
7.7.2求线段的中点222
7.8传引用调用: 将结构地址传递给函数223
7.8.1函数与指针: 简要回顾223
7.8.2结构变量的赋值与返回225
7.8.3右箭操作符与点操作符226
7.8.4程序员的捷径227
7.8.5编程案例: 观鸟228
7.9结构数组与函数230
7.9.1底线230
7.9.2举例: Student结构数组231
7.10枚举数据类型232
7.10.1通过枚举变量创建编号序列233
7.10.2枚举变量: 赋值与比较235
7.10.3枚举变量找错: 选择枚举值要谨慎238
7.10.4举例: 数硬币239
7.10.5枚举变量的输入与输出240
7.11枚举类型与函数242
7.11.1举例: 光学器件与错误代码243
7.12多文件程序245
7.13练习245
7.13.1计算时间245
7.13.2扑克牌247
7.13.3趣味狗秀248
复习题与作业251
简答题251
找错: 编译错误252
找错: 运行期错误253
编程题254
第8章函数第II部分: 高级概念256
走进新世界257
8.1函数复习257
8.1.1基本要求257
8.1.2传值调用257
8.1.3调用函数与被调函数259
8.1.4传引用调用: 向函数传递变量地址259
8.1.5全局变量与函数260
8.1.6函数传递数据的4种方法261
8.2利用引用参数的传引用调用262
8.2.1通过引用参数进行函数的传引用调用262
8.2.2引用变量数组269
8.3函数重载270
8.3.1在过去的C时代270
8.3.2函数重载271
8.4可变长参数表函数273
8.4.1画线程序274
8.4.2参数顺序275
8.4.3找错: 函数重载278
8.4.4不同类型的重载函数280
8.5内联函数281
8.6总结282
复习题与作业282
简答题282
找错题: 编译错误283
找错题: 运行期错误285
编程题287
第9章类与对象290
打蜡291
9.1面向对象的原则和定义291
9.1.1简介291
9.1.2面向对象语言的基本原则293
9.1.3对象存在于生活中294
9.1.4对象定义295
9.2类与对象296
9.2.1面向对象分析: 特征、行为和功能296
9.2.2面向对象设计297
9.2.3结构化网球程序298
9.2.4类的声明299
9.2.5网球类300
9.2.6如何给数据成员赋值302
9.3定义成员函数305
9.3.1两种不同格式305
9.3.2举例: 球体类305
9.4类的构造函数308
9.4.1数据成员的初始化308
9.4.2构造函数309
9.4.3举例: 构造函数与时钟310
9.4.4构造函数注意事项312
9.4.5举例: 两个日期312
9.5析构函数315
9.6一个简单例子316
9.6.1学习难点316
9.6.2举例: Gadgets程序316
9.6.3找错: 与类相关的常见错误320
9.7对象数组325
9.7.1PhoneList对象数组325
9.7.2对象数组和扑克牌328
9.8操作符重载与对象330
9.8.1一元操作符重载331
9.8.2增量/减量操作符的前缀形式与后缀形式332
9.8.3二元操作符重载333
9.9指针与类339
9.9.1举例340
9.10总结346
9.10.1结构与类的比较347
9.11练习348
9.11.1足球运动员348
复习题与作业353
简答题353
找错题: 编译错误353
找错题: 运行期错误356
编程题358
第10章类之间的关系360
开心时刻361
10.1对象模型和类关系361
10.2使用C++的类362
10.2.1输入输出流类iostream362
10.2.2C++字符串类362
10.2.3C++数值类362
10.2.4使用名字空间std363
10.2.5名字空间举例363
10.3“有”关系和“使用”关系365
10.3.1例1: 顾客与收银员365
10.3.2例2: 掷色子372
10.3.3例3: 教练的秒表376
10.3.4例4: 可乐零售机379
10.4总结387
作业387
第11章继承与虚函数392
家长与孩子393
11.1为什么继承如此重要393
11.1.1举例: 计数器类393
11.1.2答案是继承395
11.2继承基础395
11.2.1举例: Counter与NewCounter395
11.2.2受保护的成员399
11.2.3雇员、经理、执行总裁401
11.3存取说明符的特殊用法408
11.4多重继承410
11.5继承、构造函数和析构函数410
11.5.1复习构造函数和析构函数410
11.5.2基类和派生类的构造函数411
11.5.3基类和派生类的析构函数411
11.5.4基类和派生类构造函数的参数传递412
11.5.5找错: 继承419
11.6继承举例420
11.6.1动物园421
11.6.2洗牌与发牌424
11.6.3面向对象程序设计425
11.6.4类声明427
11.7多态与虚函数434
11.7.1多态: 一个界面,多种形式434
11.7.2什么是虚函数435
11.7.3纯虚函数437
11.7.4虚函数的应用438
11.8总结443
复习题与作业443
简答题443
编程题444
第12章高级C++编程446
冰山的启示447
12.1动态内存分配447
12.1.1概述447
12.1.2new和delete操作符448
12.1.3如果new操作失败,会出什么事451
12.2星球大战452
12.2.1为二维和三维数组分配内存452
12.2.2在函数之间多次传递地址457
12.3异常处理458
12.3.1举例459
12.3.2new操作符的异常处理461
12.4微软基础类库(MFC)462
12.4.1简述462
12.4.2快速构建一个会发声的Windows应用程序463
12.5JavaTM程序设计语言465
12.5.1JavaTM是没有指针的C++465
12.5.2Java版“Hello World”466
12.6总结: 模板、标准模板库、友元466
12.6.1cout<<"\n再见!";467
附录AVisual C++使用入门468
附录BC++关键字480
附录CC++中的操作符492
附录DASCII码493
附录E位、字节、内存及十六进制表示法497
附录F文件输入输出502
附录GC++的string类515
附录H多文件程序524
附录I键盘输入和屏幕输出532
附录JMicrosoft Visual C++调试工具544
附录K例子程序索引552
参考文献559
词汇表560
欢迎来到C++的世界2
1.1什么是C,什么是C++4
1.1.1C和C++发展简史5
1.1.2C/C++是编译语言5
1.1.3为什么程序员们喜欢C++6
1.2什么是面向对象7
1.2.1C++程序不是自动面向对象的7
1.2.2一个简单的面向对象程序案例7
1.2.3面向对象的软件更受欢迎8
1.3结构化设计与面向对象设计9
1.3.1ATM的结构化方法9
1.3.2ATM的面向对象方法9
1.4软件开发技术简介11
1.4.1如何不编程11
1.5找错12
1.5.1我的程序哪儿出了错12
复习题与作业13
简答题13
作业13
第2章C++入门: 数据类型、变量、操作符、算术、简单输入输出14
软件开发简介15
2.1编程基础15
2.1.1算法设计15
2.1.2走成功编程之路17
2.1.3练习: 如何给猫洗澡17
2.1.4三分原则18
2.1.5如何编程19
2.2术语及项目的建立19
2.2.1项目的建立步骤20
2.3C++程序的一般格式21
2.3.1Hello World!程序21
2.3.2注释21
2.3.3预处理指令22
2.3.4main函数22
2.3.5函数首行22
2.3.6C++语句23
2.3.7气象信息23
2.3.8空白字符与C++灵活的编程风格24
2.3.9语法与编译错误25
2.3.10C++关键字26
2.3.11大小写敏感27
2.3.12好的编程风格27
2.3.13坚持好的风格27
2.3.14关于程序中的注释28
2.4程序与数据: 球与球拍28
2.5C++中的数据类型29
2.5.1物品架=内存,容器=数据类型,标签=变量名30
2.5.2数据类型修饰符31
2.5.3找错: 整数有多大31
2.6C++中的变量声明32
2.6.1C++中的命名规则33
2.6.2在哪里声明变量33
2.7C++中的操作符34
2.7.1操作的优先级34
2.7.2赋值操作符35
2.7.3算术操作符36
2.7.4自增量和自减量操作符41
2.7.5累计操作符42
2.7.6C++中的其他操作符43
2.8其他话题: #define、const和数据类型转换43
2.8.1#define43
2.8.2const修饰符44
2.8.3const优于#define吗45
2.8.4数据类型转换46
2.9键盘输入和屏幕输出48
2.10练习48
2.10.1找错: 赋值操作的摆放位置48
2.10.2计算圆柱体的体积49
2.10.3求余和距离换算50
2.10.4将字符数据表示为十进制、十六进制、八进制数,流格式化51
复习题与作业51
简答题51
程序改错题52
代码阅读53
编程题54
第3章控制语句和循环55
判断,还是判断56
3.1关系操作符和逻辑操作符56
3.1.1表达式求值和操作符优先级57
3.2if语句59
3.2.1if else语句60
3.2.2if语句中的括号错误61
3.2.3if—else if—else语句62
3.2.4低效率编程方法64
3.2.5if else: This Old Man编程举例65
3.2.6嵌套if else语句66
3.2.7“?”操作符67
3.3switch语句68
3.3.1找错: 不要忘了break69
3.4循环语句概述70
3.4.1加括号还是不加括号70
3.4.2无法跳出无穷循环71
3.5for循环71
3.5.1不要更改循环指标72
3.5.2for循环举例73
3.6while循环74
3.6.1while循环举例75
3.7do while循环76
3.7.1do while举例77
3.8排除错误79
3.8.14种常见错误79
3.8.2找错: 循环无法中止80
3.8.3找错: 分号和括号82
3.8.4找错: 放错位置的else、非法else、文件不完整错误83
3.8.5调试程序84
3.9总结84
3.9.1缩进原则86
3.10练习86
3.10.1时间转换87
3.10.2数89
3.10.3输出图案90
复习题与作业92
简答题92
找错题: 编译错误93
找错题: 运行期错误93
代码阅读95
编程题95
第4章指针、地址、间接寻址操作符97
泊车与指针98
4.1指针的重要性98
4.2变量与内存98
4.2.1sizeof操作符99
4.2.2分配内存100
4.2.3计算机内存与十六进制数101
4.3取地址操作符&102
4.4指针104
4.4.1指针与取地址操作符104
4.4.2小红帽与白宫106
4.4.3指针与间接寻址操作符106
4.4.4指针类型混用109
4.5指针有什么用110
4.5.1C++中的函数只返回一个值110
4.5.2高效处理大数据结构、数组、类111
4.6总结112
4.6.1指针: 早学,勤练113
4.7练习113
4.7.1问候与指针113
4.7.2“This Old Man”与指针114
4.7.3金字塔的体积与指针115
复习题与作业116
简答题116
代码阅读116
找错题117
编程题118
第5章函数第I部分: 基本概念119
盖房子与开发软件120
5.1C++中的函数120
5.1.1使用函数之前120
5.1.2有了函数以后121
5.1.3使用函数有很多优点122
5.2函数的基本格式122
5.2.14个简单函数例子123
5.2.2调用函数与被调函数124
5.3写函数的要求125
5.3.1计算年龄125
5.3.2函数原型126
5.3.3函数调用127
5.3.4函数首行与函数体127
5.3.5传值调用129
5.3.6再看一个例子130
5.3.7回顾函数的一般形式132
5.3.8找错: 类型失配133
5.3.9找错: 调用语句中的数据类型134
5.3.10函数使用要求与C++库135
5.4局部变量、静态变量、全局变量135
5.4.1局部变量136
5.4.2找错: 忘记声明变量136
5.4.3静态变量137
5.4.4全局变量138
5.4.5全局变量是危险的139
5.4.6找错: 全局变量y1和math.h139
5.5指针与函数141
5.5.1传值调用复习141
5.5.2函数返回两个值142
5.5.3指针复习142
5.5.4传引用调用: 将变量地址传给函数143
5.6总结145
5.7练习146
5.7.1素数146
5.7.2随机数150
5.7.3时间转换151
5.7.4猫和狗152
复习题与作业155
简答题155
代码阅读156
程序找错题157
编程题157
第6章数组159
跑得更快,跳得更高160
6.1使用单数据变量160
6.2数组基础161
6.2.1C++中的数组下标从零开始162
6.2.2数组不被自动初始化162
6.2.3初始化一维数组162
6.2.4for循环与数组163
6.3数组的伴随指针165
6.3.1数组指针165
6.4一维数组和函数166
6.4.1数组与数组指针167
6.4.2向函数传递一维数组167
6.4.3求数组元素的平均值168
6.4.4找错: 不能从函数中“返回”数组169
6.5字符数组172
6.5.1字符数组的初始化173
6.5.2空字符173
6.5.3输入字符串175
6.5.4读取数值和字符数据181
6.5.5C++中的字符串函数183
6.6多维数组184
6.6.1二维数组的初始化185
6.6.2嵌套for循环和二维数组186
6.6.3二维数组的应用: 水电杂费计算程序186
6.7多维数组与函数188
6.7.1重新设计水电杂费计算程序188
6.7.2白雪公主: 用二维数组存储姓名190
6.8数组下标越界190
6.8.1数组下标越界等于灾难192
6.9从文件中读数据192
6.10总结192
6.11练习194
6.11.1常用单词194
6.11.2气象信息195
复习题与作业199
简答题199
找错题: 编译错误199
找错题: 运行期错误200
编程题201
第7章用户定义的数据类型、结构与枚举204
建城堡205
7.1用户定义的数据类型205
7.1.1将数据分组205
7.1.2结构与枚举206
7.2结构206
7.2.1数据类型基本概念回顾206
7.2.2创建并声明结构207
7.2.3结构说明208
7.2.4无名结构209
7.3访问结构成员210
7.3.1方框图210
7.3.2访问结构成员210
7.4结构数组213
7.4.1结构数组举例213
7.5结构中的结构216
7.5.1使用了时间结构的竞赛程序216
7.5.2嵌套了两个结构的结构217
7.6复制结构219
7.7结构与函数220
7.7.1时间结构举例221
7.7.2求线段的中点222
7.8传引用调用: 将结构地址传递给函数223
7.8.1函数与指针: 简要回顾223
7.8.2结构变量的赋值与返回225
7.8.3右箭操作符与点操作符226
7.8.4程序员的捷径227
7.8.5编程案例: 观鸟228
7.9结构数组与函数230
7.9.1底线230
7.9.2举例: Student结构数组231
7.10枚举数据类型232
7.10.1通过枚举变量创建编号序列233
7.10.2枚举变量: 赋值与比较235
7.10.3枚举变量找错: 选择枚举值要谨慎238
7.10.4举例: 数硬币239
7.10.5枚举变量的输入与输出240
7.11枚举类型与函数242
7.11.1举例: 光学器件与错误代码243
7.12多文件程序245
7.13练习245
7.13.1计算时间245
7.13.2扑克牌247
7.13.3趣味狗秀248
复习题与作业251
简答题251
找错: 编译错误252
找错: 运行期错误253
编程题254
第8章函数第II部分: 高级概念256
走进新世界257
8.1函数复习257
8.1.1基本要求257
8.1.2传值调用257
8.1.3调用函数与被调函数259
8.1.4传引用调用: 向函数传递变量地址259
8.1.5全局变量与函数260
8.1.6函数传递数据的4种方法261
8.2利用引用参数的传引用调用262
8.2.1通过引用参数进行函数的传引用调用262
8.2.2引用变量数组269
8.3函数重载270
8.3.1在过去的C时代270
8.3.2函数重载271
8.4可变长参数表函数273
8.4.1画线程序274
8.4.2参数顺序275
8.4.3找错: 函数重载278
8.4.4不同类型的重载函数280
8.5内联函数281
8.6总结282
复习题与作业282
简答题282
找错题: 编译错误283
找错题: 运行期错误285
编程题287
第9章类与对象290
打蜡291
9.1面向对象的原则和定义291
9.1.1简介291
9.1.2面向对象语言的基本原则293
9.1.3对象存在于生活中294
9.1.4对象定义295
9.2类与对象296
9.2.1面向对象分析: 特征、行为和功能296
9.2.2面向对象设计297
9.2.3结构化网球程序298
9.2.4类的声明299
9.2.5网球类300
9.2.6如何给数据成员赋值302
9.3定义成员函数305
9.3.1两种不同格式305
9.3.2举例: 球体类305
9.4类的构造函数308
9.4.1数据成员的初始化308
9.4.2构造函数309
9.4.3举例: 构造函数与时钟310
9.4.4构造函数注意事项312
9.4.5举例: 两个日期312
9.5析构函数315
9.6一个简单例子316
9.6.1学习难点316
9.6.2举例: Gadgets程序316
9.6.3找错: 与类相关的常见错误320
9.7对象数组325
9.7.1PhoneList对象数组325
9.7.2对象数组和扑克牌328
9.8操作符重载与对象330
9.8.1一元操作符重载331
9.8.2增量/减量操作符的前缀形式与后缀形式332
9.8.3二元操作符重载333
9.9指针与类339
9.9.1举例340
9.10总结346
9.10.1结构与类的比较347
9.11练习348
9.11.1足球运动员348
复习题与作业353
简答题353
找错题: 编译错误353
找错题: 运行期错误356
编程题358
第10章类之间的关系360
开心时刻361
10.1对象模型和类关系361
10.2使用C++的类362
10.2.1输入输出流类iostream362
10.2.2C++字符串类362
10.2.3C++数值类362
10.2.4使用名字空间std363
10.2.5名字空间举例363
10.3“有”关系和“使用”关系365
10.3.1例1: 顾客与收银员365
10.3.2例2: 掷色子372
10.3.3例3: 教练的秒表376
10.3.4例4: 可乐零售机379
10.4总结387
作业387
第11章继承与虚函数392
家长与孩子393
11.1为什么继承如此重要393
11.1.1举例: 计数器类393
11.1.2答案是继承395
11.2继承基础395
11.2.1举例: Counter与NewCounter395
11.2.2受保护的成员399
11.2.3雇员、经理、执行总裁401
11.3存取说明符的特殊用法408
11.4多重继承410
11.5继承、构造函数和析构函数410
11.5.1复习构造函数和析构函数410
11.5.2基类和派生类的构造函数411
11.5.3基类和派生类的析构函数411
11.5.4基类和派生类构造函数的参数传递412
11.5.5找错: 继承419
11.6继承举例420
11.6.1动物园421
11.6.2洗牌与发牌424
11.6.3面向对象程序设计425
11.6.4类声明427
11.7多态与虚函数434
11.7.1多态: 一个界面,多种形式434
11.7.2什么是虚函数435
11.7.3纯虚函数437
11.7.4虚函数的应用438
11.8总结443
复习题与作业443
简答题443
编程题444
第12章高级C++编程446
冰山的启示447
12.1动态内存分配447
12.1.1概述447
12.1.2new和delete操作符448
12.1.3如果new操作失败,会出什么事451
12.2星球大战452
12.2.1为二维和三维数组分配内存452
12.2.2在函数之间多次传递地址457
12.3异常处理458
12.3.1举例459
12.3.2new操作符的异常处理461
12.4微软基础类库(MFC)462
12.4.1简述462
12.4.2快速构建一个会发声的Windows应用程序463
12.5JavaTM程序设计语言465
12.5.1JavaTM是没有指针的C++465
12.5.2Java版“Hello World”466
12.6总结: 模板、标准模板库、友元466
12.6.1cout<<"\n再见!";467
附录AVisual C++使用入门468
附录BC++关键字480
附录CC++中的操作符492
附录DASCII码493
附录E位、字节、内存及十六进制表示法497
附录F文件输入输出502
附录GC++的string类515
附录H多文件程序524
附录I键盘输入和屏幕输出532
附录JMicrosoft Visual C++调试工具544
附录K例子程序索引552
参考文献559
词汇表560
猜您喜欢