Back to Item 50: Improve your understanding of C++.
Continue to Index

Afterword

If, having digested 50 ways to improve your programs and designs, you still find yourself hungry for C++ guidelines, you may be interested in my second book on the subject, More Effective C++: 35 New Ways to Improve Your Programs and Design. Like Effective C++, More Effective C++ covers material that's essential for effective C++ software development, but Effective C++ focuses more on fundamentals, while More Effective C++ also spends time on newer language features and on advanced programming techniques.

You can find detailed information on More Effective C++ — including four complete Items, the book's list of recommended reading, and more — at the °More Effective C++ web site. In case you can't wait, the contents of More Effective C++ are summarized below.

Dedication
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 `&&`, `||`, or `,`
Item 8: |  | Understand the different meanings 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 RTTI
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

Back to Item 50: Improve your understanding of C++.
Continue to Index