《More Effective C++》(中文第三版) 是由Scott Meyers撰写的一本深入讲解C++编程最佳实践的书籍。该书在中国由侯捷翻译,并由多位译者分别负责不同章节,如ZHC和WQ。本书以问题为导向,共分为28个主题(ITEMM1至ITEMM28),涵盖了C++语言的关键概念和高效编程策略。
1. **译序与导言**:
- 侯捷的译序为读者介绍了书籍的整体框架和作者的意图,强调了C++语言的复杂性以及提升编程效率的重要性。
- 导读部分概述了本书内容,包括C++的核心特性,如指针与引用的区别、类型转换的C++风格等,以及如何理解和处理异常处理和效率问题。
2. **基础议题**:
- 指针与引用的区别(ITEMM1)帮助读者理解两种间接访问内存方式的不同用途和风险。
- 建议使用C++风格的类型转换(ITEMM2),以避免潜在的错误和提高代码可读性。
- 提醒避免对数组使用多态(ITEMM3),因为这可能导致难以理解和调试的行为。
- 避免不必要的缺省构造函数(ITEMM4),以减少创建不必要的对象和资源浪费。
3. **运算符与类型转换**:
- 教导读者如何谨慎地设计类型转换函数(ITEMM5),以确保正确性和性能。
- 比较自增和自减操作符的前缀和后缀形式(ITEMM6),强调了表达式的顺序和性能影响。
- 强调不重载逻辑运算符“&&”,“||”,或“,”(ITEMM7),以避免混淆和潜在的错误。
4. **异常处理**:
- 解释析构函数在资源管理中的作用,防止资源泄漏(ITEMM9和ITEMM10)。
- 说明异常处理的规范,如禁止异常信息传递到析构函数之外(ITEMM11)。
- 引导读者理解异常抛出与参数传递、虚函数调用之间的区别(ITEMM12)。
- 提供了引用捕获异常的技巧(ITEMM13)和异常规格的使用注意事项(ITEMM14)。
5. **性能优化**:
- 强调80-20原则,即优先关注能带来最大效益的20%代码(ITEMM16)。
- 推荐使用懒惰计算(LAZY EVALUATION,ITEMM17)以避免不必要的计算。
- 分期摊还计算成本(ITEMM18)是提升效率的一种策略。
- 讲解临时对象的产生和利用(ITEMM19)以支持返回值优化(ITEMM20)。
6. **编程技巧**:
- 提供了关于类型转换重载(ITEMM21)、运算符赋值形式的使用(ITEMM22)以及程序库选择(ITEMM23)的建议。
- 深入探讨虚拟函数、多继承、虚基类和运行时类型识别(RTTI)的成本(ITEMM24)。
这本书不仅提供了实用的编码技巧,还着重于代码的清晰度、可维护性和性能,适合C++开发者深入学习和提升编程能力。无论是新手还是经验丰富的程序员,都能从中找到提升自己C++编程水平的方法。