第一部分 C++的缺陷捕捉策略 1
第1章 C++的缺陷来自哪里 3
第2章 什么时候捕捉缺陷 5
2.1 为什么编译器是捕捉缺陷的最好场合 5
2.2 怎样用编译器捕捉缺陷 6
2.3 处理类型的正确方式 7
第3章 在运行时遇见错误该怎么办 11
第二部 分捕捉缺陷:一次处理一个缺陷 17
第4章 索引越界 19
4.1 动态数组 19
4.2 静态数组 24
4.3 多维数组 26
第5章 指针运算 31
第6章 无效的指针、引用和迭代器 33
第7章 未初始化的变量 37
7.1 初始化的数值(int、double等) 37
7.2 未初始化的布尔值 40
第8章 内存泄漏 43
8.1 引用计数指针 47
8.2 作用域指针 49
8.3 用智能指针实行所有权 51
第9章 解引用NULL指针 53
第10章 拷贝构造函数和赋值操作符 55
第11章 避免在析构函数中编写代码 57
第12章 怎样编写一致的比较操作符 63
第13章 使用标准C函数库的错误 67
第三部分 捕捉缺陷的乐趣:从测试到调试到产品 69
第14章 基本的测试原则 71
第15章 调试错误的策略 75
第16章 使代码更容易调试 79
第17章 总结 85
附录A 本书所使用的scpp库的源代码 89
附录B scpp_assert.hpp和scpp_assert.cpp文件的源代码 91
附录C scpp_vector.hpp文件的源代码 93
附录D scpp_array.hpp文件的源代码 95
附录E scpp_matrix.hpp文件的源代码 97
附录F scpp_types.hpp文件的源代码 99
附录G scpp_refcountptr.hpp文件的源代码 103
附录H scpp_scopedptr.hpp文件的源代码 105
附录I scpp_ptr.hpp文件的源代码 107
附录J scpp date.hpp和scpp_date.cpp文件的源代码 109