热门排行
简介
C++ 是一个难学易用的语言!
C++ 的难学,不仅在其广博的语法,以及语法背後的语意,以及语意背後的深层思维,以及深层思维背後的物件模型;C++ 的难学,还在於它提供了四种不同(但相辅相成)的程式设计思维模式:procedural-based,object-based,object-oriented,generic paradigm。
1. 译序(侯捷) 3
2. 导读 4
2.1 本书所谈的C++ 4
2.2 惯例与术语 6
2.3 臭虫报告,意见提供,内容更新 7
3. 基础议题 8
3.1 Item M1:指针与引用的区别 8
3.2 Item M2:尽量使用C++风格的类型转换 10
3.3 Item M3:不要对数组使用多态 14
3.4 Item M4:避免无用的缺省构造函数 16
4. 运算符 20
4.1 Item M5:谨慎定义类型转换函数 21
4.2 Item M6:自增(increment)、自减(decrement)操作符前缀形式与后缀形式的区别 27
4.3 Item M7:不要重载“&&”,“||”, 或“,” 29
4.4 Item M8:理解各种不同含义的new和delete 32
5. 异常 37
5.1 Item M9:使用析构函数防止资源泄漏 38
5.2 Item M10:在构造函数中防止资源泄漏 42
5.3 Item M11:禁止异常信息(exceptions)传递到析构函数外 51
5.4 Item M12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异 54
5.5 Item M13:通过引用(reference)捕获异常 60
5.6 Item M14:审慎使用异常规格(exception specifications) 64
5.7 Item M15:了解异常处理的系统开销 69
6. 效率 71
6.1 Item M16:牢记80-20准则(80-20 rule) 72
6.2 Item M17:考虑使用lazy evaluation(懒惰计算法) 74
6.3 Item M18:分期摊还期望的计算 81
6.4 Item M19:理解临时对象的来源 85
6.5 Item M20:协助完成返回值优化 87
6.6 Item M21:通过重载避免隐式类型转换 91
6.7 Item M22:考虑用运算符的赋值形式(op=)取代其单独形式(op) 93
6.8 Item M23:考虑变更程序库 96
6.9 Item M24:理解虚拟函数、多继承、虚基类和RTTI所需的代价 98
7. 技巧(Techniques,又称Idioms 或Pattern) 106
7.1 Item M25:将构造函数和非成员函数虚拟化 107
7.2 Item M26:限制某个类所能产生的对象数量 111
7.3 Item M27:要求或禁止在堆中产生对象 125
7.4 Item M28:灵巧(smart)指针 134
7.5 Item M29:引用计数 149
7.6 Item M30:代理类 177
7.7 Item M31:让函数根据一个以上的对象来决定怎么虚拟 190
8. 杂项 212
8.1 Item M32:在未来时态下开发程序 212
8.2 Item M33:将非尾端类设计为抽象类 216
8.3 Item M34:如何在同一程序中混合使用C++和C 226
8.4 Item M35:让自己习惯使用标准C++语言 231
9. 附录 237
9.1 推荐读物 237
9.2 一个auto_ptr的实现实例 241
9.3 在 C++ 中计算物件个数(Objects Counting in C++)译者:陈崴 244
9.4 为智能指标实作 operator->*(Implementing operator->* for Smart Pointers)译者:陈崴 254