第一部分 预备知识 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格式化 15
1.10操纵器 19
1.11函数重载和函数模板 23
1.12运算符重载 24
1.13内联函数 26
1.14默认参数 26
1.15new和delete 27
1.16语句声明 28
1.17标准库特征 29
1.18 C的兼容性 29
1.19小结 31
第2章 指针 33
2.1容易出错的编程 33
2.2基础 33
2.3指针运算 37
2.4传引用语义 41
2.5普通指针 42
2.6 const指针 43
2.7指针和一维数组 45
2.8数组作为参数 50
2.9字符串数组 52
2.10指针和多维数组 54
2.11更高深的内容 56
2.12指向函数的指针 59
2.13指向成员函数的指针 62
2.14封装和不完全类型 64
2.15小结 69
第3章 预处理器 71
3.1 #include指令 71
3.2其他的预处理指令 72
3.3预定义宏 75
3.4条件编译 76
3.5预处理运算符 77
3.6实现assert 79
3.7宏的魅力 81
3.8字符集、三字符运算符和双字符运算符 84
3.9翻译阶段 87
3.10小结 88
第4章 C标准库之一:面向合格的程序员 89
4.1 <ctype.h> 90
4.2 <stdio.h> 93
4.3 <stdli.h> 98
4.4 <strin.h> 107
第5章 C标准库之二:面向熟练的程序员 111
5.1 <assert.h> 111
5.2 <limits.h> 112
5.3 <stddef.h> 116
5.4 <time.h> 118
5.5字符集 121
5.6代码页 124
5.7字符集标准 124
5.8 ISO 10646 124
5.9统一字符编码 125
第6章 C标准库之三:面向优秀的程序员 127
6.1 <float.h> 127
6.2 <math.h> 129
6.3 <errno.h> 134
6.4 <locale.h> 134
6.5 <setjmp.h> 137
6.6 <signal.h> 138
6.7 <stdarg.h> 139
6.8 va_list作为参数 141
6.9应用 142
6.10结论 146
6.11浮点数系统 146
第二部分 主要概念 157
第7章 抽象 157
7.1数据抽象 157
7.2运算符重载 166
7.3具体的数据类型 171
7.4类型抽象 177
7.5函数抽象 180
7.6小结 180
第8章 模板 181
8.1泛型编程 183
8.2函数模板 184
8.3类模板 185
8.4模板参数 190
8.5模板特化 192
8.6小结 196
第9章 位操作 197
9.1按位运算符 197
9.2访问单独的位 199
9.3大型置位 205
9.4位字符串 218
9.5 Wish List 218
9.6 bitset模板 219
9.7 vector<bool>模板特化 221
9.8小结 222
第10章 类型转换和强制类型转换 223
10.1整数的升级 223
10.2降级 227
10.3算术类型转换 229
10.4函数原型 231
10.5显式类型转换 232
10.6函数风格强制类型转换 233
10.7 const的正确性 234
10.8用户定义的类型转换 236
10.9加强运算符[] 242
10.10新风格强制类型转换 244
10.11小结 246
第11章 可见性 247
11.1名字中包含什么 247
11.2作用域 247
11.3最小的作用域 250
11.4类的作用域 251
11.5嵌套类 257
11.6局部类 259
11.7典型的名字空间 260
11.8名字空间的作用域 262
11.9生存期 264
11.10临时对象的生存期 267
11.11连接 268
11.12类型安全连接 271
11.13“语言”连接 272
11.14小结 272
第12章 控制结构 275
12.1结构化编程 275
12.2分支 285
12.3非局部分支 288
12.4信号 292
12.5小结 297
12.6参考文献 298
第13章 异常 299
13.1可选择的错误处理方法 299
13.2堆栈展开 305
13.3异常捕捉 307
13.4标准异常 310
13.5资源管理 311
13.6构造函数和异常 315
13.7内存管理 321
13.8异常规范 322
13.9错误处理策略 324
13.10小结 327
第14章 面向对象编程 329
14.1继承 332
14.2不同种类的集合 334
14.3虚函数和多态 335
14.4抽象基类 337
14.5实例研究:一个对象持续的框架 341
14.6数据库访问 343
14.7映射对象到相关模式 345
14.8 PFX的结构 346
14.9一个代码的预排 349
14.10小结 370
第三部分 使用标准库 373
第15章 算法 373
15.1复杂度 374
15.2通用算法 376
15.3函数对象 380
15.4函数种类 382
15.5函数对象适配器 383
15.6算法种类 384
15.7小结 387
15.8参考文献 387
第16章 容器和迭代器 389
16.1标准容器 392
16.2迭代器 393
16.3迭代器种类 394
16.4特殊用途的迭代器 396
16.5容器适配器 399
16.6关联容器 400
16.7应用 400
16.8非标准模板库容器 409
16.9小结 411
第17章 文本处理 413
17.1 scanf 413
17.2 printf 418
17.3子字符串 421
17.4标准C+++字符串类 428
17.5字符串流 431
17.6宽字符串 433
17.7小结 433
第18章 文件处理 435
18.1过滤器 435
18.2二进制文件 438
18.3记录处理 440
18.4临时文件 446
18.5可移植性 447
18.6 POSIX 447
18.7文件描述符 447
18.8通过描述符来拷贝文件 448
18.9读目录条目 450
18.10重定向标准错误 455
18.11封装重定向操作 458
18.12小结 464
第19章 时间和日期处理 465
19.1 Julian日期编码 471
19.2用于实际工作的日期类 490
19.3计算年的星期数 517
19.4小结 518
19.5参考文献 518
第20章 动态内存管理 519
20.1参差数组 519
20.2在标准C中使用堆 521
20.3 C+++的自由存储 525
20.4浅拷贝与深拷贝 526
20.5处理内存分配失败 529
20.6重载new和delete 530
20.7配置new 532
20.8堆的管理 534
20.9避免内存管理 535
20.10小结 542
附录 543
附录A C/C+++的兼容性 543
附录B 标准C+++算法 545
附录C 函数对象和适配器 555
附录D 有注解的参考书目 559
附录E C+++标准的制定 561