第一部分 预备知识 3
第1章 更好的C 3
1.1 两种语言简述 3
1.2 循序渐进 4
1.3 类型系统 4
1.4 函数原型 5
1.5 类型安全连接 9
1.6 引用 10
1.7 类型安全I/O 11
1.8 标准流 12
1.9 格式化 14
1.10 操纵器 18
1.11 函数重载和函数模板 22
1.12 运算符重载 22
1.13 内联函数 24
1.14 缺省参数 25
1.15 new和delete 26
1.16 语句声明 26
1.17 标准库特征 27
1.18 C的兼容性 27
1.19 小结 29
第2章 指针 31
2.1 容易出错的编程 31
2.2 基础 31
2.3 指针运算 35
2.4 传引用语义 38
2.5 普通指针 39
2.6 const指针 40
2.7 指针和一维数组 42
2.8 数组作为参数 47
2.9 字符串数组 49
2.10 指针和多维数组 50
2.11 更高深的内容 53
2.12 指向函数的指针 56
2.13 指向成员函数的指针 59
2.14 封装和不完全类型 61
2.15 小结 65
第3章 预处理器 67
3.1 #include指令 67
3.2 其他的预处理指令 68
3.3 预定义宏 70
3.4 条件编译 72
3.5 预处理运算符 73
3.6 实现assert 75
3.7 宏的魅力 76
3.8 字符集、三字符运算符和双字符运算符 79
3.9 翻译阶段 82
3.10 小结 82
第4章 C标准库之一:面向合格的程序员 83
4.1 <ctype.h> 84
4.2 <stdio.h> 87
4.3 <stdlib.h> 91
4.4 <string.h> 100
第5章 C标准库之二:面向熟练的程序员 103
5.1 <assert.h> 103
5.2 <limits.h> 104
5.3 <stddef.h> 107
5.4 <time.h> 110
5.5 字符集 112
5.6 代码页 114
5.7 字符集标准 115
5.8 ISO 10646 115
5.9 统一字符编码 116
第6章 C标准库之三:面向优秀的程序员 117
6.1 <float.h> 117
6.2 <math.h> 119
6.3 <error.h> 123
6.4 <locale.h> 124
6.5 <setjmp.h> 126
6.6 <signal.h> 127
6.7 <stdarg.h> 128
6.8 va_list作为参数 130
6.9 应用 131
6.10 结论 135
6.11 浮点数系统 135
第二部分 主要概念 145
第7章 抽象 145
7.1 数据抽象 145
7.2 运算符重载 154
7.3 具体的数据类型 158
7.4 类型抽象 164
7.5 函数抽象 166
7.6 小结 167
第8章 模板 169
8.1 泛型编程 171
8.2 函数模板 171
8.3 类模板 173
8.4 模板参数 177
8.5 模板转化 179
8.6 小结 183
第9章 位操作 185
9.1 按位运算符 185
9.2 访问单独的位 187
9.3 大型置位 193
9.4 位字符串 205
9.5 Wish List 205
9.6 bitset模板 206
9.7 vector<bool>模板特化 208
9.8 小结 209
第10章 类型转换和强制类型转换 211
10.1 整数的升级 211
10.2 降级 215
10.3 算术类型转换 216
10.4 函数原型 218
10.5 显式类型转换 220
10.6 函数风格强制类型转换 221
10.7 const的正确性 221
10.8 用户定义的类型转换 223
10.9 加强运算符[] 229
10.10 新风格强制类型转换 231
10.11 小结 233
第11章 可见性 235
11.1 名字中包含什么 235
11.2 作用域 235
11.3 最小的作用域 238
11.4 类的作用域 239
11.5 嵌套类 244
11.6 局部类 246
11.7 典型的名字空间 247
11.8 名字空间的作用域 249
11.9 生存期 250
11.10 临时对象的生存期 253
11.11 连接 254
11.12 类型安全连接 258
11.13 “语言”连接 258
11.14 小结 259
第12章 控制结构 261
12.1 结构化编程 261
12.2 分支 270
12.3 非局部分支 273
12.4 信号 277
12.5 小结 282
12.6 参考文献 282
第13章 异常 283
13.1 可选择的错误处理方法 283
13.2 堆栈展开 288
13.3 异常捕捉 290
13.4 标准异常 293
13.5 资源管理 293
13.6 构造函数和异常 298
13.7 内存管理 303
13.8 异常规范 304
13.9 错误处理策略 306
13.10 小结 309
第14章 面向对象编程 311
14.1 继承 314
14.2 不同种类的集合 316
14.3 虚函数和多态 316
14.4 抽象基类 319
14.5 实例研究:一个对象持续的框架 322
14.6 数据库访问 324
14.7 映射对象到相关模式 326
14.8 PFX的结构 327
14.9 一个代码的预排 330
14.10 小结 349
第三部分 使用标准库 353
第15章 算法 353
15.1 复杂度 354
15.2 通用算法 356
15.3 函数对象 360
15.4 函数种类 361
15.5 函数对象适配器 362
15.6 算法种类 363
15.7 小结 366
15.8 参考文献 366
第16章 容器和迭代器 367
16.1 标准容器 370
16.2 迭代器 371
16.3 迭代器种类 372
16.4 特殊用途的迭代器 373
16.5 容器适配器 376
16.6 关联容器 377
16.7 应用 377
16.8 非标准模板库容器 385
16.9 小结 387
第17章 文本处理 389
17.1 scanf 389
17.2 printf 394
17.3 子字符串 397
17.4 标准C++字符串类 403
17.5 字符串流 406
17.6 宽字符串 408
17.7 小结 408
第18章 文件处理 409
18.1 过滤器 409
18.2 二进制文件 412
18.3 记录处理 414
18.4 临时文件 419
18.5 可移植性 420
18.6 POSIX 420
18.7 文件描述符 421
18.8 通过描述符来拷贝文件 421
18.9 读目录条目 423
18.10 重定向标准错误 427
18.11 封装重定向操作 431
18.12 小结 436
第19章 时间和日期处理 437
19.1 Julian日期编码 442
19.2 用于实际工作的日期类 460
19.3 计算年的星期数 486
19.4 小结 487
19.5 参考文献 487
第20章 动态内存管理 489
20.1 参差数组 489
20.2 在标准C中使用堆 491
20.3 C++的自由存储 495
20.4 浅拷贝与深拷贝 496
20.5 处理内存分配失败 499
20.6 重载new和delete 499
20.7 配置new 501
20.8 堆的管理 503
20.9 避免内存管理 504
20.10 小结 510
附录 513
附录A C/C++的兼容性 513
附录B 标准C++算法 515
附录C 函数对象和适配器 525
附录D 有注解的参考书目 529
附录E C++标准的制定 531