"More Effective C++(WQ版)" 是一本关于C++编程语言进阶实践的书籍,由著名C++专家Scott Meyers撰写,并由侯捷翻译。这本书包含了35个关键的编程建议和技巧,旨在帮助读者提升C++编程的效率和质量。
1. **译序和导读**:
- 译者侯捷提供了译序和导读,介绍了本书的背景和目的,以及C++编程的一些基本理念和约定,同时鼓励读者在阅读过程中积极反馈问题和建议。
2. **基础议题**:
- ITEM M1讨论了指针与引用的不同,强调引用的安全性和不可变性,而指针可以为空且可重新绑定。
- ITEM M2提倡使用C++的静态类型转换而非C风格的类型强制转换,以提高代码的清晰度和安全性。
- ITEM M3指出数组不适合在多态环境中使用,因为数组没有自己的类型,这可能导致意外的行为。
- ITEM M4建议避免为类提供无用的默认构造函数,以防止不必要的实例化和潜在错误。
3. **运算符**:
- ITEM M5提醒谨慎定义类型转换函数,因为它们可能导致隐式转换,产生难以预料的结果。
- ITEM M6解释了自增和自减操作符的前缀和后缀形式的区别,后缀形式会保留原值,而前缀形式会立即改变对象状态。
- ITEM M7警告不应重载逻辑运算符"&&", "||" 和逗号运算符",",因为这些运算符有特殊的短路行为,重载可能导致混乱。
- ITEM M8讨论了不同形式的new和delete操作,包括配对使用new[]和delete[],以及new表达式的异常行为。
4. **异常处理**:
- ITEM M9和M10讨论如何在构造函数和析构函数中管理资源,以防止异常导致的资源泄漏。
- ITEM M11指出,异常信息不应传递到析构函数之外,以维护异常安全。
- ITEM M12探讨了抛出异常与传递参数或调用虚函数之间的差异,强调异常处理对运行时的影响。
- ITEM M13推荐通过引用捕获异常,以保持异常对象的完整性。
- ITEM M14和M15分别讨论了异常规格的使用和异常处理的性能成本。
5. **效率优化**:
- ITEM M16提出了80-20原则,即集中精力优化关键的20%代码,而非所有代码。
- ITEM M17引入了惰性求值(Lazy Evaluation)的概念,以减少不必要的计算。
- ITEM M18和M19讲述了预期计算的分期摊还和临时对象的产生,以优化内存管理和计算效率。
- ITEM M20提到了返回值优化(Return Value Optimization,RVO),这是编译器的一种优化策略,可以避免复制对象。
- ITEM M21至M24分别讨论了避免隐式类型转换、考虑使用赋值运算符重载、改变程序库设计以及理解多态、多继承和虚基类的性能影响。
6. **技巧和惯用法**:
- 这部分涵盖了各种C++编程技巧,如使用运算符的赋值形式代替单独形式,以及何时考虑替换现有的程序库等。
"More Effective C++(WQ版)" 是一本深入C++编程实践的指南,通过一系列实用的建议,帮助开发者写出更高效、更安全、更易于维护的C++代码。