第1章 程序设计导论 1
1.1 计算机硬件结构 1
1.2 计算机程序 4
1.3 计算机程序开发 8
1.3.1 程序设计 8
1.3.2 程序实现 9
1.3.3 程序测试 11
1.3.4 程序发布 11
1.4 信息分类与数据类型 12
1.4.1 二进制数制 12
1.4.2 数据类型 15
1.4.3 信息分类及数字化 17
1.5 C++语言简介 20
1.6 本章习题 21
第2章 数值计算 22
2.1 程序中的变量 23
2.1.1 变量的定义 23
2.1.2 变量的访问 25
2.2 程序中的常量 26
2.3 算术运算 29
2.3.1 C++语言中的加减乘除 29
2.3.2 其他算术运算符 31
2.4 位运算 33
2.5 赋值运算 36
2.6 数据的输入与输出 38
2.7 引用与指针 41
2.7.1 引用 41
2.7.2 指针 42
2.8 本章习题 48
第3章 算法与控制结构 50
3.1 算法 51
3.2 布尔类型 52
3.2.1 关系运算符 53
3.2.2 逻辑运算符 53
3.3 选择语句 55
3.3.1 if-else语句 55
3.3.2 switch-case语句 59
3.4 循环语句 63
3.4.1 while语句 64
3.4.2 do-while语句 65
3.4.3 for语句 66
3.4.4 break语句和continue语句 67
3.5 算法设计与评价 71
3.5.1 计算复杂度 71
3.5.2 内存占用量 73
3.5.3 算法设计举例 73
3.6 本章习题 75
第4章 数组与文字处理 76
4.1 数组 77
4.1.1 数组变量的定义与访问 77
4.1.2 常用的数组处理算法 80
4.2 指针与数组 84
4.2.1 指针运算 84
4.2.2 动态内存分配 88
4.2.3 指针数组 90
4.3 字符类型 91
4.3.1 字符型常量 92
4.3.2 字符型运算 93
4.4 字符数组与文字处理 94
4.4.1 字符串常量 94
4.4.2 字符数组 95
4.4.3 常用文字处理算法 96
4.5 中文处理 99
4.5.1 字符编码标准 100
4.5.2 基于ANSI编码的中文处理程序 101
4.5.3 基于Unicode编码的中文处理程序 103
4.6 本章习题 105
第5章 结构化程序设计之一 107
5.1 结构化程序设计方法 107
5.1.1 设计举例 107
5.1.2 基于模块的团队分工协作开发 109
5.1.3 模块的四大要素 111
5.2 函数的定义和调用 112
5.2.1 函数的定义 113
5.2.2 函数的调用 114
5.2.3 函数的执行 116
5.2.4 函数的声明 119
5.3 数据的管理策略 121
5.3.1 数据分散管理,按需传递 121
5.3.2 数据集中管理,全局共享 122
5.3.3 变量的作用域 124
5.4 程序代码和变量的存储原理 129
5.4.1 程序副本与变量 130
5.4.2 动态分配的内存 134
5.4.3 函数指针 135
5.5 函数间参数传递的三种方式 137
5.5.1 值传递 137
5.5.2 引用传递 138
5.5.3 指针传递 139
5.6 在函数间传递数组 141
5.6.1 在函数间传递一维数组 141
5.6.2 在函数间传递一维数组的首地址 142
5.6.3 在函数间传递二维数组 142
5.7 本章习题 143
第6章 结构化程序设计之二 145
6.1 C++源程序的多文件结构 145
6.1.1 多文件结构的源代码组织 145
6.1.2 静态函数与静态变量 148
6.1.3 头文件 151
6.2 编译预处理指令 153
6.2.1 文件包含指令 153
6.2.2 宏定义指令 154
6.2.3 条件编译指令 156
6.3 几种特殊形式的函数 159
6.3.1 带默认形参值的函数 159
6.3.2 重载函数 161
6.3.3 内联函数 162
6.3.4 主函数main的形参和返回值 163
6.3.5 递归函数 165
6.4 系统函数 170
6.4.1 C语言的系统函数 171
6.4.2 命名空间 175
6.4.3 C++语言的系统函数 177
6.5 自定义数据类型 179
6.5.1 类型定义typedef 179
6.5.2 枚举类型 181
6.5.3 联合体类型 182
6.5.4 结构体类型 185
6.6 结构化程序设计回顾 188
6.7 本章习题 189
第7章 面向对象程序设计之一 192
7.1 面向对象程序设计方法 192
7.1.1 结构化程序设计 192
7.1.2 面向对象程序设计中的分类 194
7.1.3 面向对象程序设计中的封装 197
7.1.4 面向对象程序的设计过程 200
7.2 类的定义 203
7.3 对象的定义与访问 205
7.3.1 对象的定义与访问 205
7.3.2 对象指针 206
7.3.3 类与对象的编译原理 207
7.4 对象的构造与析构 210
7.4.1 构造函数 211
7.4.2 析构函数 214
7.4.3 拷贝构造函数中的深拷贝与浅拷贝 215
7.5 对象的应用 219
7.5.1 对象数组 219
7.5.2 对象的动态分配 220
7.5.3 对象作为函数的形参 221
7.6 类中的常成员与静态成员 225
7.6.1 常成员 226
7.6.2 静态成员 228
7.7 类的友元 232
7.7.1 友元函数 233
7.7.2 友元类 234
7.8 本章习题 236
第8章 面向对象程序设计之二 239
8.1 代码重用 239
8.1.1 结构化程序设计中的代码重用 239
8.1.2 面向对象程序设计中的代码重用 240
8.2 类的组合 242
8.2.1 组合类的定义 243
8.2.2 组合类对象的定义与访问 244
8.2.3 组合类对象的构造与析构 246
8.2.4 类的聚合 248
8.2.5 前向引用声明 250
8.3 类的继承与派生 252
8.3.1 派生类的定义 253
8.3.2 派生类对象的定义与访问 256
8.3.3 保护权限与保护继承 257
8.3.4 派生类对象的构造与析构 260
8.3.5 继承与派生的应用 263
8.4 多态性 267
8.4.1 运算符的多态与重载 268
8.4.2 对象的替换与多态 272
8.4.3 虚函数 278
8.4.4 抽象类 281
8.5 关于多继承的讨论 285
8.5.1 多个基类之间的成员重名 286
8.5.2 重复继承 287
8.5.3 虚基类 288
8.6 本章习题 289
第9章 流类库与文件I/O 292
9.1 流类库 293
9.2 标准I/O 296
9.2.1 通用输入流类istrea m及其对象cin 296
9.2.2 通用输出流类ostrea m及其对象cout 301
9.3 文件I/O 307
9.3.1 文件及其操作 307
9.3.2 文件输出流类ofstream及文件输出 310
9.3.3 文件输入流类ifstream及文件输入 314
9.3.4 文件输入/输出流类fstream 316
9.4 string类及字符串 I/O 320
9.4.1 字符串类string 321
9.4.2 字符串I/O 322
9.5 基于Unicode编码的流类库 323
9.6 本章习题 325
第10章 C++标准库 326
10.1 函数模板 326
10.1.1 函数模板的定义与使用 327
10.1.2 函数模板的编译原理 328
10.1.3 函数模板的声明 330
10.2 类模板 331
10.2.1 类模板的定义与使用 331
10.2.2 类模板的编译原理 333
10.2.3 类模板的继承与派生 334
10.3 C++标准库 336
10.4 C++语言的异常处理机制 338
10.4.1 程序中的三类错误 338
10.4.2 程序异常处理机制 341
10.4.3 try-catch异常处理机制 343
10.4.4 C++标准库中的异常类exception 347
10.5 数据集合及其处理算法 349
10.5.1 数据集合的存储和处理 350
10.5.2 C++标准库中数据集合的存储和处理 353
10.5.3 向量类vector 356
10.5.4 列表类list 360
10.5.5 集合类set 360
10.5.6 映射类map 361
10.6 结语 363
10.7 本章习题 363
附录 Microsoft Visual C++6.0集成开发环境 364
参考文献 370