Basics | |||
Item 1 | Distinguish between pointers and references | 9 | |
Item 2 | Prefer C++-style cast | 12 | |
Item 3 | Never treat arrays polymorphically | 16 | |
Item 4 | Avoid gratuitous default constructors | 19 | |
Operators | |||
Item 5 | Be wary of user-defined conversion functions | 24 | |
Item 6 | Distinguish between prefix and postfix forms of increment and decrement operators | 31 | |
Item 7 | Never overload &&, ||, or , | 35 | |
Item 8 | Understand the different meanings of new and delete | 38 | |
Exceptions | |||
Item 9 | Use destructors to prevent resource leaks | 45 | |
Item 10 | Prevent resource leaks in constructors | 50 | |
Item 11 | Prevent exceptions from leaving destructors | 58 | |
Item 12 | Understand how throwing an exception differs from passing a parameter or calling a virtual function | 61 | |
Item 13 | Catch exceptions by reference | 68 | |
Item 14 | Use exception specifications judiciously | 72 | |
Item 15 | Understand the costs of exception handling | 78 | |
Efficiency | |||
Item 16 | Remember the 80-20 rule | 82 | |
Item 17 | Consider using lazy evaluation | 85 | |
Item 18 | Amortize the cost of expected computations | 93 | |
Item 19 | Understand the origin of temporary objects | 98 | |
Item 20 | Facilitate the return value optimization | 101 | |
Item 21 | Overload to avoid implicit type conversions | 105 | |
Item 22 | Consider using op= instead of stand-alone op | 107 | |
Item 23 | Consider alternative libraries | 110 | |
Item 24 | Understand the costs of virtual functions, multiple inheritance, virtual base classes, and RTTI | 113 | |
Techniques | |||
Item 25 | Virtualizing constructors and non-member functions | 123 | |
Item 26 | Limiting the number of objects of a class | 130 | |
Item 27 | Requiring or prohibiting heap-based objects | 145 | |
Item 28 | Smart pointers | 159 | |
Item 29 | Reference counting | 183 | |
Item 30 | Proxy classes | 213 | |
Item 31 | Making functions virtual with respect to more than one object | 228 | |
Miscellany | |||
Item 32 | Program in the future tense | 252 | |
Item 33 | Make non-leaf classes abstract | 258 | |
Item 34 | Understand how to combine C++ and C in the same program | 277 | |
Item 35 | Familiarize yourself with the language standard | 232 |