本书采用C++语言来讲解面向对象编程,在介绍C++语法的基础上,还引入了数据结构、设计模式等内容。全书篇章结构精良、组织有序、概念清晰,围绕教学需求展开内容,程序文档形式一致,为学生日后在学术界和专业领域承担程序设计方面的工作打好了基础。
出版者的话
译者序
前言
第1章 计算机与程序设计语言导论 1
1.1 计算机系统 1
1.1.1 计算机硬件 1
1.1.2 计算机软件 4
1.2 计算机语言 4
1.2.1 机器语言 4
1.2.2 符号语言 5
1.2.3 高级语言 5
1.3 计算机语言范式 5
1.3.1 面向过程的程序设计语言范式 6
1.3.2 面向对象的程序设计语言范式 7
1.3.3 函数式程序设计语言范式 7
1.3.4 逻辑式程序设计语言范式 8
1.3.5 C++语言中包含的范式 8
1.4 程序设计 8
1.4.1 理解问题 9
1.4.2 开发解决方案 9
1.5 程序开发 11
1.5.1 编写和编辑程序 11
1.5.2 编译程序 12
1.5.3 链接程序 12
1.5.4 执行程序 12
1.6 测试 12
1.6.1 设计测试数据 12
1.6.2 程序错误 13
本章小结 13
思考题 14
第2章 C++程序设计基础 16
2.1 C++程序 16
2.1.1 第一个程序 16
2.1.2 第二个程序 20
2.2 变量、值和常量 22
2.2.1 变量 22
2.2.2 值 22
2.2.3 常量 26
2.3 C++程序的组成部分 26
2.3.1 标记符 27
2.3.2 注释 29
2.4 数据类型 30
2.4.1 整数类型 30
2.4.2 字符类型 36
2.4.3 布尔类型 38
2.4.4 浮点类型 39
2.4.5 void类型 40
2.4.6 字符串类 41
本章小结 42
思考题 42
编程题 47
第3章 表达式和语句 48
3.1 表达式 48
3.1.1 基本表达式 49
3.1.2 一元表达式 51
3.1.3 乘法类表达式 52
3.1.4 加法类表达式 54
3.1.5 赋值表达式 55
3.1.6 左值和右值的概念 57
3.2 类型转换 57
3.2.1 隐式类型转换 58
3.2.2 显式类型转换(强制转换) 61
3.3 表达式的求值顺序 62
3.3.1 优先级 62
3.3.2 结合性 65
3.4 上溢和下溢 66
3.4.1 整数的上溢和下溢 66
3.4.2 浮点数的上溢和下溢 68
3.5 格式化数据 69
3.5.1 用于输出的操作符 69
3.5.2 用于输入的操作符 74
3.6 语句 75
3.6.1 声明语句 76
3.6.2 表达式语句 77
3.6.3 空语句 78
3.6.4 复合语句 78
3.6.5 返回语句 79
3.7 程序设计 80
3.7.1 提取浮点数的整数部分和小数部分 80
3.7.2 提取整数的个位数 82
3.7.3 把时间分解为时分秒 83
3.7.4 计算平均值和偏差 84
本章小结 86
思考题 86
编程题 90
第4章 选择结构 92
4.1 简单选择结构 92
4.1.1 关系和等性表达式 92
4.1.2 单分支选择结构:if语句 93
4.1.3 双分支选择结构:if-else语句 97
4.1.4 多分支选择结构 101
4.2 复杂条件决策 103
4.2.1 逻辑表达式 104
4.2.2 逻辑表达式的应用 105
4.3 基于特定值的选择结构 111
4.3.1 switch语句 111
4.4 条件表达式 117
4.4.1 条件表达式的结构 117
4.4.2 比较 118
4.5 程序设计 119
4.5.1 学生成绩 119
4.5.2 计算给定收入的税款 122
4.5.3 日期编号 124
本章小结 126
思考题 126
编程题 128
第5章 循环结构 130
5.1 概述 130
5.1.1 前缀表达式和后缀表达式 130
5.1.2 循环语句 132
5.2 while语句 132
5.2.1 计数器控制while语句 133
5.2.2 事件控制while语句 138
5.2.3 while语句分析 144
5.3 for语句 144
5.3.1 循环头 145
5.3.2 循环体 145
5.4 do-while语句 148
5.4.1 事件控制的循环结构 149
5.4.2 do-while循环结构的分析 151
5.5 有关循环结构的详细信息 152
5.5.1 三种循环结构的比较 152
5.5.2 嵌套循环 152
5.6 其他相关语句 155
5.6.1 return语句 155
5.6.2 break语句 157
5.6.3 continue语句 157
5.6.4 goto语句 158
5.7 程序设计 158
5.7.1 累加和与累乘积 158
5.7.2 阶乘 160
5.7.3 乘幂 162
5.7.4 最小值和最大值 164
5.7.5 any或者all查询 166
本章小结 168
思考题 169
编程题 171
第6章 函数 173
6.1 概述 173
6.1.1 函数的优点 174
6.1.2 函数的定义、声明和调用 174
6.1.3 库函数和用户自定义函数 176
6.2 库函数 177
6.2.1 数学函数 177
6.2.2 字符函数 181
6.2.3 处理时间 183
6.2.4 随机数生成 184
6.3 用户自定义函数 186
6.3.1 函数的四种类型 186
6.3.2 使用声明 192
6.4 数据交换 194
6.4.1 传递数据 195
6.4.2 返回值 199
6.4.3 综合示例 200
6.5 有关参数的进一步讨论 203
6.5.1 默认参数 203
6.5.2 函数重载 204
6.6 作用域和生命周期 206
6.6.1 作用域 206
6.6.2 生命周期 211
6.7 程序设计 213
6.7.1 固定投资的未来价值 214
6.7.2 周期性投资的未来价值 217
本章小结 221
思考题 221
编程题 224
第7章 用户自定义类型:类 227
7.1 概述 227
7.1.1 现实生活中的类型和实例 227
7.1.2 程序中的类和对象 228
7.1.3 比较 228
7.2 类 229
7.2.1 一个示例 229
7.2.2 类定义 231
7.2.3 成员函数定义 233
7.2.4 内联函数 234
7.2.5 应用程序 235
7.2.6 结构 235
7.3 构造函数和析构函数 236
7.3.1 构造函数 236
7.3.2 析构函数 238
7.3.3 创建和销毁对象 239
7.3.4 必需的成员函数 239
7.4 实例成员 245
7.4.1 实例数据成员 245
7.4.2 实例成员函数 245
7.4.3 类不变式 249
7.5 静态成员 252
7.5.1 静态数据成员 252
7.5.2 静态成员函数 253
7.6 面向对象的程序设计 259
7.6.1 独立文件 259
7.6.2 独立编译 260
7.6.3 防止多重包含 265
7.6.4 封装 265
7.7 设计类 266
7.7.1 表示分数的类 267
7.7.2 表示时间的类 272
本章小结 276
思考题 276
编程题 278
第8章 数组 281
8.1 一维数组 281
8.1.1 数组属性 281
8.1.2 声明、分配和初始化 282
8.1.3 访问数组元素 284
8.2 有关数组的进一步讨论 290
8.2.1 访问操作 290
8.2.2 修改操作 293
8.2.3 使用带数组的函数 295
8.2.4 并行数组 298
8.3 多维数组 302
8.3.1 二维数组 302
8.3.2 三维数组 306
8.4 程序设计 307
8.4.1 频率数组和直方图 307
8.4.2 线性转换 309
本章小结 312
思考题 313
编程题 314
第9章 引用、指针和内存管理 316
9.1 引用 316
9.1.1 概述 316
9.1.2 检索值 318
9.1.3 修改值 319
9.1.4 引用的应用 320
9.2 指针 325
9.2.1 地址 325
9.2.2 指针类型和指针变量 327
9.2.3 检索值 329
9.2.4 使用const修饰符 329
9.2.5 指向指针的指针 331
9.2.6 两种特殊的指针 331
9.2.7 指针的应用 332
9.3 数组和指针 336
9.3.1 一维数组和指针 336
9.3.2 二维数组和指针 342
9.4 内存管理 344
9.4.1 代码内存 344
9.4.2 静态内存 344
9.4.3 栈内存 345
9.4.4 堆内存 346
9.4.5 二维数组 349
9.5 程序设计 352
9.5.1 课程类 352
9.5.2 矩阵类 357
本章小结 362
思考题 362
编程题 366
第10章 字符串 368
10.1 C字符串 368
10.1.1 C字符串库 369
10.1.2 C字符串的操作 369
10.2 C++字符串类 381
10.2.1 总体设计思路 382
10.2.2 C++字符串库 383
10.2.3 C++字符串定义的操作 384
10.3 程序设计 402
10.3.1 四个自定义函数 402
10.3.2 数值进制编码系统的转换 404
本章小结 409
思考题 409
编程题 410
第11章 类之间的关系 412
11.1 继承关系 412
11.1.1 总体思路 412
11.1.2 公共继承 413
11.1.3 有关公共继承的进一步讨论 424
11.1.4 继承的三种类型 430
11.2 关联关系 431
11.2.1 聚合关系 432
11.2.2 组合关系 435
11.3 依赖关系 438
11.3.1 UML图 439
11.3.2 一个综合的示例 439
11.4 程序设计 443
11.4.1 词法分析器类 443
11.4.2 注册 446
本章小结 454
思考题 455
编程题 457
第12章 多态性和其他问题 460
12.1 多态性 460
12.1.1 多态性的条件 461
12.1.2 构造函数和析构函数 464
12.1.3 绑定 470
12.1.4 运行时类型信息 471
12.2 其他问题 472
12.2.1 抽象类 472
12.2.2 多重继承 482
本章小结 494
思考题 494
编程题 495
第13章 运算符重载 497
13.1 对象的三种角色 497
13.1.1 宿主对象 497
13.1.2 参数对象 499
13.1.3 返回对象 500
13.2 重载原理 501
13.2.1 运算符的三种类别 502
13.2.2 重载的规则 503
13.2.3 运算符函数 504
13.3 重载为成员函数 504
13.3.1 一元运算符 504
13.3.2 二元运算符 507
13.3.3 其他运算符 511
13.4 重载为非成员函数 517
13.4.1 二元算术运算符 517
13.4.2 等性运算符和关系运算符 518
13.4.3 提取运算符和插入运算符 519
13.5 类型转换 520
13.5.1 基本类型转换为类类型 520
13.5.2 类类型转换为基本类型 521
13.6 设计类 521
13.6.1 带重载运算符的Fraction类 521
13.6.2 Date类 530
13.6.3 多项式 536
本章小结 543
思考题 543
编程题 544
第14章 异常处理 546
14.1 概述 546
14.1.1 错误处理的传统方法 546
14.1.2 异常处理的方法 551
14.1.3 异常规范 558
14.1.4 栈展开 559
14.2 类中的异常 560
14.2.1 构造函数中的异常 561
14.2.2 析构函数中的异常 567
14.3 标准异常类 567
14.3.1 逻辑错误 568
14.3.2 运行时错误 569
14.3.3 其他五个类 570
14.3.4 使用标准异常类 571
本章小结 572
思考题 572
编程题 575
第15章 泛型编程:模板 576
15.1 函数模板 576
15.1.1 使用函数族 576
15.1.2 使用函数模板 577
15.1.3 其他函数模板版本 580
15.1.4 接口文件和应用程序文件 583
15.2 类模板 584
15.2.1 接口和实现 584
15.2.2 编译 587
15.2.3 其他问题 591
15.2.4 继承 592
15.2.5 回顾 592
本章小结 593
思考题 593
编程题 594
第16章 输入/输出流 595
16.1 概述 595
16.1.1 流 596
16.1.2 数据表示 596
16.1.3 流类 598
16.2 控制台流 599
16.2.1 控制台对象 599
16.2.2 流状态 600
16.2.3 输入/输出 602
16.3 文件流 606
16.3.1 文件输入/输出 606
16.3.2 文件打开模式 609
16.3.3 其他成员函数 614
16.3.4 顺序访问与随机访问 616
16.3.5 二进制输入/输出 619
16.4 字符串流 625
16.4.1 实例化 626
16.4.2 应用:适配器 627
16.5 格式化数据 629
16.5.1 直接使用标志、字段和变量 629
16.5.2 预定义操作符 632
16.5.3 操作符定义 634
16.6 程序设计 638
16.6.1 合并两个已排序文件 638
16.6.2 对称密码 640
本章小结 644
思考题 645
编程题 645
第17章 递归 647
17.1 概述 647
17.1.1 循环与递归 647
17.1.2 递归算法 649
17.1.3 尾部递归函数和非尾部递归函数 657
17.1.4 辅助函数 658
17.2 递归排序和查找 660
17.2.1 快速排序 660
17.2.2 二分查找法 664
17.2.3 汉诺塔 667
17.3 程序设计 670
17.3.1 字符串排列 670
17.3.2 素数 672
本章小结 675
思考题 675
编程题 677
在线章节
第18章数据结构入门
第19章标准模板库
第20章设计模式
附录AUnicode
附录B进制编码系统
附录CC++表达式和运算符
附录D位运算
附录E位域
附录F预处理
附录G名称空间
附录H比率
附录I时间
附录JLambda表达式
附录K正则表达式
附录L智能指针
附录M随机数生成
附录N引用
附录O移动与复制
附录PC++11概述
附录Q统一建模语言
附录R位集