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 Chapter 7: Miscellany   
  Continue to Index