出版说明 1
序言 1
第1章 绪论 1
1.1 概述 1
目录 1
1.2 为什么要学习C++语言 2
1.3 软件 3
1.4 为什么要面向对象 4
1.5 什么是面向对象程序设计语言 5
1.6 自顶向下和自底向上的设计方法 6
1.7 面向对象技术要点 7
1.7.1 抽象 7
1.7.2 封装 7
1.7.5 重点在对象结构,不是在过程结构 8
1.7.3 数据和行为的联合 8
1.7.4 共享 8
1.7.6 协同作用 9
1.8 对传统的结构化程序设计方法的挑战 9
1.8.1 应当改变传统的软件开发过程 9
1.8.2 对“算法+数据结构=程序设计”的挑战 9
1.9 面向对象方法 10
1.9.1 什么是面向对象 11
1.9.2 面向对象方法学 12
1.9.3 三种模型 13
1.9.4 小结 14
习题 14
2.1 C++对C的扩充 16
6.4.1 友元函数 1 16
第2章 C++程序设计初步 16
2.2 C++程序开发过程 18
2.3 第一个C++程序 20
2.4 第二个C++程序 21
2.5 第三个C++程序 23
2.6 注释行 24
2.7 最简单的函数 24
习题 25
第3章 C++语言基础 27
3.1 C++语言的字符集与保留字 27
3.1.1 字符集 27
3.1.2 保留字 27
3.1.3 标识符命名规则 27
3.2 基本数据类型 28
3.2.1 C++基本数据类型 28
3.2.2 常量 29
3.2.3 变量 32
3.3 自定义数据类型 34
3.3.1 数组类型 34
3.3.2 结构类型 42
3.3.3 枚举类型 44
3.3.4 联合类型 45
3.4 运算符与表达式 46
3.4.1 算术运算符 46
3.4.2 赋值运算符 47
3.4.3 增量及减量运算符 48
3.4.4 sizeof运算符 49
3.4.5 关系运算符和逻辑运算符 50
3.4.6 位操作运算符 51
3.5 C++流控制语句 51
3.5.1 添加的布尔类型和布尔操作 52
3.5.2 条件分支if语句 52
3.5.3 switch开关语句 54
3.5.4 for循环语句 56
3.5.5 do_while循环语句 56
3.5.6 while循环语句 57
3.5.7 循环中的跳跃 57
3.5.8 循环退出 58
3.5.9 嵌套循环 58
习题 59
4.1 函数的定义与调用 63
4.1.1 函数的定义 63
第4章 C++函数 63
4.1.2 函数的返回值 64
4.1.3 函数的调用 64
4.1.4 函数原型 65
4.2 函数中的局部变量与静态变量 66
4.2.1 局部变量 66
4.2.2 静态变量 67
4.3 内联函数 69
4.4 缺省参数的函数 70
4.5 重载函数 71
4.6 递归函数 72
4.7 不确定自变量个数的函数 73
4.8 函数模板 74
习题 75
4.9 使用C++系统函数 75
第5章 指针和引用 79
5.1 指针 79
5.1.1 指针的概念 79
5.1.2 指向变量的指针 79
5.1.3 指向数组的指针 80
5.1.4 指向结构的指针 81
5.1.5 指针和动态存储 82
5.1.6 指针与函数 82
5.1.7 const指针 84
5.1.8 字符指针 85
5.2 引用 86
5.2.1 引用的概念 87
5.2.3 引用作为返回值 88
5.2.2 引用作为函数参数 88
5.2.4 独立引用 89
5.3 把结构作为函数参数传递 90
5.3.1 结构参数的值传递 90
5.3.2 参数的引用传递 91
5.3.3 结构参数的引用传递 91
5.3.4 结构参数的指针传递 92
5.4 数组作为函数参数传递 93
5.5 串作为函数参数传递 94
5.6 传递指向动态结构的指针 95
5.7 void类型 97
习题 98
第6章 类和对象 101
6.1 C++的类和对象 101
6.1.1 类的定义 101
6.1.2 对象的定义 103
6.1.3 类的抽象数据类型Time的实现 104
6.1.4 C++类与C的结构 106
6.2 构造函数 108
6.2.1 缺省构造函数 109
6.2.2 拷贝构造函数 110
6.2.3 带参数的构造函数 111
6.2.4 重载构造函数 112
6.3 析构函数 113
6.4 友元 115
6.4.2 用友元函数重载运算符 117
6.4.3 友元类 120
6.5 类的静态成员 121
6.5.1 静态数据成员 121
6.5.2 静态成员函数 124
6.6.1 const成员函数及其参数 125
6.5.3 类作用域和访问类成员 125
6.6 const和类 125
6.6.2 const对象 126
6.7 内嵌类 127
6.8 使用this指针 130
6.9 类和对象的意义 131
习题 132
第7章 继承 135
7.1 基类与导出类 135
7.2 导出类的数据成员和成员函数 138
7.3 导出类的构造函数 139
7.4 多重继承 142
7.4.1 多重继承的二义性 145
7.4.2 类的聚合关系 147
7.4.3 更强大的聚合关系 151
7.5 继承与程序开发 151
习题 152
第8章 多态、虚拟函数和模板 155
8.1 静态联编和动态联编 155
8.2 虚拟函数 156
8.3 纯虚拟函数和抽象基类 158
8.4 虚拟析构函数 160
8.5 虚拟基类 161
8.6 模板 162
8.6.1 类模板 163
8.6.2 类模板应用举例 164
8.6.3 类模板和非类型参数 167
8.6.4 模板和继承 167
8.6.5 模板和友元 168
8.6.6 模板和静态成员 169
习题 169
9.1 重载单目运算符和重载双目运算符 172
第9章 运算符重载 172
9.2 运算符重载的实例:串类 173
9.3 C++输入/输出流库 182
9.3.1 ostream类及<<运算符重载 184
9.3.2 istream类及>>运算符重载 187
9.3.3 文件输入/输出 190
9.4 数据转换 196
9.4.1 基本数据类型之间的转换 196
9.4.2 对象和基本数据类型之间的转换 196
9.4.3 用户自定义的不同类的对象之间的转换 199
9.4.4 何时用何种方法进行转换 205
9.5 防止运算符重载与转换中陷阱的指导原则 205
习题 206
第10章 包容器类 209
10.1 对象数组 209
10.2 对象指针 210
10.2.1 访问成员 211
10.2.2 new的另一种用法 211
10.2.3 对象指针数组 212
10.3 C++标准模板库中的包容器类 213
10.3.1 STL简介 213
10.3.2 包容器 214
10.3.3 算法 214
10.3.4 迭代器 215
10.3.5 成员函数和适配器 216
10.4 顺序包容器类 216
10.4.1 vector类 216
10.4.2 list类 218
10.4.3 deque类 220
10.5 使用STL应注意的问题 221
习题 221
11.1 例外处理 224
第11章 例外处理和命名空间 224
11.1.1 例外是如何产生的 225
11.1.2 例外处理的一个例子 225
11.1.3 类属例外的捕获 227
11.1.4 指定可能的例外 227
11.1.5 捕获动态分配的例外 228
11.2 命名空间 229
11.2.1 命名空间定义 229
11.2.2 如何使用命名空间 232
习题 234
第12章 面向对象建模 236
12.1 对象模型 236
12.1.1 对象图 236
12.1.2 链接和关联 238
12.1.3 高级链接和关联 240
12.1.4 概括和继承 243
12.1.5 对象模型的一个典型实例 245
12.2 动态模型 247
12.2.1 事件和状态 247
12.2.2 操作 252
12.2.3 动态模型的一个典型实例 254
12.2.4 对象模型与动态模型的关系 258
12.3 功能模型 259
12.3.1 数据流图 259
12.3.2 操作 262
12.3.3 约束 263
12.3.4 功能模型的一个典型实例 263
12.3.5 功能模型与对象模型和动态模型的关系 266
习题 268
第13章 面向对象设计与实现 270
13.1 分析 270
13.2.1 将系统划分为子系统 272
13.2 系统设计 272
13.2.2 系统设计阶段综述 273
13.2.3 系统设计的几个步骤 274
13.3 对象设计 274
13.3.1 对象设计综述 275
13.3.2 对象设计的步骤 276
13.4 OMT设计和实现小结 277
习题 278
第14章 C++面向对象设计与实现的典型实例剖析 281
14.1 计算机动画 281
14.1.1 动画制作过程 281
14.1.2 问题陈述 282
14.1.3 分析 283
14.1.4 系统设计 286
14.1.5 对象设计 287
14.1.6 实现 289
14.2 对象图编译 291
14.2.1 问题陈述 292
14.2.2 系统设计 297
14.2.3 对象设计 297
14.3 C++仿生系统 300
14.3.1 人工生命是什么 300
14.3.2 计算机和生命 300
14.3.3 生态系统仿真的规格说明 301
14.3.4 C++仿生系统实例 301
习题 313
附录A C++标准库 314
A.1 库的命名和访问 314
A.2 iostream库 314
A.3 stdlib库 315
A.4 algorithm库 315
参考文献 319