本书与其姊妹篇《Effective C++》一样,本书充满了实用性很强的忠告,是C++程序员必备的读物。本书以实例说明异常处理带给C++类和函数的冲击。面地描述了C++专家所使用的高级技术,包括placement new、virtuali constructors、smart pointers、reference counting、proxy classes和double-dispatching等。介绍新的语言特性。包括bool、mutable、explicit、namespaces、成员模板、标准模板库等。如果你的编译器不支持这些特性,本书还介绍了如何不利用它们完成工作。
一些经过验证的用来改善程序效率的方法,包括检验C++语言特性所带来的时间和空间上的成本。
全面地描述了C++专家所使用的高级技术,包括placement new、virtuali constructors、smart pointers、reference counting、proxy classes和double-dispatching等。
以实例说明异常处理带给C++类和函数的冲击。
介绍新的语言特性。包括bool、mutable、explicit、namespaces、成员模板、标准模板库等。如果你的编译器不支持这些特性,本书还介绍了如何不利用它们完成工作。
Acknowledgments
Introduction
Basics
Item 1: Distinguish between pointers and references.
Item 2: Prefer C++-style casts.
Item 3: Never treat arrays polymorphically.
Item 4: Avoid gratuitous default constructors.
Operators
Item 5: Be wary of user-defined conversion functions.
Item 6: Distinguish between prefix and postfix forms of increment and decrement operators.
Item 7: Never overload &&, II, or
Item 8: Understand the differentmeanings of new and delete.
Exceptions
Item 9: Use destructors to prevent resource leaks.
Item 10: Prevent resource leaks in constructors.
Item 11: Prevent exceptions from leaving destructors.
Item 12: Understand how throwing an exception differs from passing a parameter or calling a virtual function.
Item 13: Catch exceptions by reference.
Item 14: Use exception specifications judiciously.
Item 15: Understand the costs of exception handling.
Efficiency
Item 16: Remember the 80-20 rule.
Item 17: Consider using lazy evaluation.
Item 18: Amortize the cost of expected computations.
Item 19: Understand the origin of temporary objects.
Item 20: Facilitate the return value optimization.
Item 21: Overload to avoid implicit type conversions.
Item 22: Consider using op= instead of stand-alone op.
Item 23: Consider alternative libraries.
Item 24: Understand the costs of virtual functions, multiple inheritance, virtual base classes, and RTrl.
Techniques
Item 25: Virtualizing constructors and non-member functions.
Item 26: Limiting the number of objects of a class.
Item 27: Requiring or prohibiting heap-based objects.
Item 28: Smart pointers.
Item 29: Reference counting.
Item 30: Proxy classes.
Item 31: Making functions virtual with respect to more than one object
Miscellany
Item 32: Program in the future tense.
Item 33: Make non-leaf classes abstract.
Item 34: Understand how to combine C++ and C in the same program.
Item 35: Familiarize yourself with the language standard.
Recommended Reading
An auto-ptr Implementation
General Index
Index of Example Classes, Functions, and Templates