Skip to content

Latest commit

 

History

History
49 lines (42 loc) · 1.94 KB

more-effective-c++.md

File metadata and controls

49 lines (42 loc) · 1.94 KB

More Effective C++ CheatSheet

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 newand 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 lazyevaluation
  • 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