|
|
|
|
|
| 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 |
|
|
| 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 &&, ||, or , |
| Item 8: | Understand the different meanings of newand delete |
|
|
| 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 |
|
|
| 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 RTTI |
|
|
| 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 |
|
|
| 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 |
|
|
|