第1章 绪论 1
1.1 C++程序设计语言概述 2
1.2 C++简短的历史 4
第2章 C++程序的结构 8
2.1 C++应用程序的结构 8
2.2 简单的C++程序 9
2.3 C++源程序的执行 13
第3章 数据和运算 16
3.1 标识符 16
3.2 基本对象和基本类型 16
3.2.1 基本运算对象 17
3.2.2 基本数据类型 18
3.2.3 变量声明与赋值 20
3.3 常量 21
3.3.1 整型常量 21
3.3.2 浮点常量 21
3.3.3 字符常量 21
3.3.4 串常量 22
3.4 导出类型 23
3.4.1 指针 23
3.4.2 引用 24
3.4.3 数组 25
3.4.4 函数 26
3.5 运算符 28
3.5.1 运算符列表 28
3.5.2 算术运算符与赋值运算符 30
3.5.3 关系运算符和逻辑运算符 30
3.5.4 增量和减量运算符 31
3.5.5 位逻辑运算符 31
3.5.6 条件运算符和逗号运算符 32
3.5.7 其他运算符 33
3.5.8 算术运算中的类型转换 36
3.5.9 表达式 36
4.1.1 流程控制语句列表 41
4.1 流程控制语句 41
第4章 流程控制、函数和文件 41
4.1.2 条件语句 42
4.1.3 循环语句 44
4.1.4 跳转语句 46
4.2 函数和文件 48
4.2.1 作用域 49
4.2.2 存储分类符 50
4.2.3 函数的参数传递 53
4.2.4 函数参数 55
4.3 内联、重载和引用 57
4.3.1 宏和内联 57
4.3.2 重载函数 58
4.3.3 函数、引用和常量 61
第5章 指针和自定义数据类型 67
5.1 指针及其运算 67
5.1.1 指针 67
5.1.2 指针的算术运算 68
5.1.3 关系运算 68
5.1.4 赋值运算 69
5.2 指针和数组 69
5.2.1 指针与数组的关系 69
5.2.2 字符指针与字符数组 70
5.2.3 指针数组 71
5.2.4 指针的指针 72
5.3 指针和函数 73
5.3.1 指针函数 73
5.3.2 函数指针 74
5.4 指针、引用、常量和复杂类型 78
5.4.1 指针与常量 78
5.4.2 指针和引用 78
5.4.3 复杂类型的识别 79
5.5 结构、联合和用户自定义类型 80
5.5.1 结构的定义和声明 80
5.5.2 对结构的操作 82
5.5.3 结构、指针和数组 83
5.5.4 位段 87
5.5.5 联合 88
5.5.6 枚举 90
5.5.7 类型定义typedef 90
5.6 结构与函数 91
5.6.1 结构用作函数参数和返回值 91
5.6.2 成员函数 93
第6章 类 97
6.1 类的引入 97
6.2 类定义 99
6.3 构造函数和析构函数 101
6.4.1 this指针 108
6.4 类成员 108
6.4.2 成员对象和成员对象指针 109
6.4.3 静态类成员 112
6.4.4 常量类成员 114
6.5 友员、嵌套类和结构 115
6.5.1 友员 115
6.5.2 嵌套类 120
6.5.3 结构和联合 121
6.6 对象、指针和数组 122
6.6.1 对象数组 122
6.6.2 指向数据成员的指针 123
6.6.3 指向成员函数的指针 124
6.6.4 成员指针数组 126
6.7 一个完整的类 128
第7章 派生类 136
7.1 派生类 136
7.2 访问基类中的成员 141
7.3 虚函数 144
7.3.1 基类指针和派生类指针 144
7.3.2 类型域 146
7.3.3 虚函数 148
7.3.4 使用虚函数 150
7.3.5 与虚函数有关的特征 163
7.4 多继承 167
7.5 重复继承和共享继承 170
7.5.1 重复继承 170
7.5.2 虚基类 172
7.5.3 部分共享继承 175
7.5.4 复杂继承中的构造函数和析构函数 177
第8章 运算符重载 185
8.1 运算符重载 185
8.2 算术运算符、赋值运算符和逻辑运算符的重载 190
8.2.1 重载算术运算符 190
8.2.2 重载赋值运算符 191
8.2.3 复制构造函数 194
8.2.4 重载逻辑运算符 196
8.3 用户定义的转换 197
8.3.1 转换构造函数 197
8.3.2 转换运算符 198
8.3.3 二义性 199
8.4 复数类 202
8.5 重载增量和减量运算符 207
8.6 重载下标运算符 211
8.7 重载函数调用运算符 216
8.8 递引用运算符的重载 217
8.9 new和delete运算符的重载 222
9.1 模板 230
第9章 模板 230
9.2 使用类模板 237
9.3 函数模板 243
9.4 模板参数、特殊版本的模板、模板友员 247
9.4.1 模板参数 247
9.4.2 特殊版本的模板 249
9.4.3 友员和静态成员 252
9.5 使用函数模板 254
9.5.1 利用派生添加操作 255
9.5.2 用函数参数来传递操作 257
9.5.3 隐式地传递操作 258
9.5.4 用类模板参数添加操作 259
9.6 用模板实现关联数组 260
第10章 异常处理 269
10.1 用异常来处理错误 269
10.2 多个异常 275
10.2.1 处理多个异常 275
10.2.2 用枚举组织异常 280
10.2.3 用派生类组织异常 280
10.2.4 利用虚函数来组织异常 283
10.2.5 再次抛出异常 285
10.2.6 用多继承来组织异常 286
10.2.7 用模板组织异常 287
10.3.2 unexpected()函数 288
10.3.1 异常接口说明的形式 288
10.3 异常的接口说明 288
10.4 资源分配时的异常 291
10.5 异常与错误 295
第11章 流 301
11.1 输出流和输入流 301
11.1.1 输出流 301
11.1.2 输入流 303
11.1.3 类型安全的流 304
11.1.4 重载插入/析取运算符 305
11.2 格式化输入/输出 306
11.2.1 宽度控制 307
11.2.2 格式状态 308
11.3 控制符 311
11.3.1 预定义控制符 311
11.3.2 用户定义的无参控制符 312
11.3.3 用户定义的带参控制符 313
11.3.4 用模板来定义带参控制符 315
11.4 其它的输入输出函数 316
11.4.1 错误处理 316
11.4.2 几个控制输入输出的函数 317
11.4.3 二进制输入输出流 319
11.5 文件和流 320
11.5.1 打开文件 320
11.5.2 按正文方式读入文件 321
11.5.3 按二进制方式读/写文件 322
11.5.4 使用read()和write()函数 323
11.5.5 使用文件指针 324
11.6 字符串流 326
11.6.1 ostrstream类流 326
11.6.2 istrstream流 328
11.7 streambuf流类 329
附录A 语法汇总 334
附录B 兼容性小结 346
附录C 常用库函数小结 348
附录D 流库 352