More Effective C++ Contents


 
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