Effective C++ Tips
Posted on March 7th, 2008
-- Sponsored Links --

Shifting From C to C++.
-- Sponsored Links --
– Prefer const and inline to #define.
– Prefer iostream to stdio.h.
– Prefer new and delete to malloc and free.
– Prefer C++style comments.
Memory Management.
– Use the same form in corresponding uses of new and delete.
– Use delete on pointer members in destructors.
– Be prepared for outofmemory conditions.
– Adhere to convention when writing operator new and operator delete.
– Avoid hiding the “normal” form of new.
– Write operator delete if you write operator new.
Constructors, Destructors, and Assignment Operators.
– Declare a copy constructor and an assignment operator for classes with dynamically allocated memory.
– Prefer initialization to assignment in constructors.
– List members in an initialization list in the order in which they are declared.
– Make destructors virtual in base classes.
– Have operator= return a reference to *this.
– Assign to all data members in operator=.
– Check for assignment to self in operator=.
Classes and Functions: Design and Declaration.
– Strive for class interfaces that are complete and minimal.
– Differentiate among member functions, nonmember functions, and friend functions.
– Avoid data members in the public interface.
– Use const whenever possible.
– Prefer passbyreference to passbyvalue.
– Don’ t try to return a reference when you must return an object.
– Choose carefully between function overloading and parameter defaulting.
– Avoid overloading on a pointer and a numerical type.
– Guard against potential ambiguity.
– Explicitly disallow use of implicitly generated member functions you don’t want.
– Partition the global namespace.
Classes and Functions: Implementation.
– Avoid returning “handles” to internal data.
– Avoid member functions that return nonconst pointers or references to members less accessible than themselves.
– Never return a reference to a local object or to a dereferenced pointer nitialized by new within the function.
– Postpone variable definitions as long as possible.
– Use inlining judiciously.
– Minimize compilation dependencies between files.
Inheritance and ObjectOriented Design.
– Make sure public inheritance models “isa.”
– Differentiate between inheritance of interface and inheritance of mplementation.
– Never redefine an inherited nonvirtual function.
– Never redefine an inherited default parameter value.
– Avoid casts down the inheritance hierarchy.
– Model “hasa” or “isimplementedintermsof” through layering.
– Differentiate between inheritance and templates.
– Use private inheritance judiciously.
– Use multiple inheritance judiciously.
– Say what you mean; understand what you’ re saying.
Miscellany
– Know what functions C++ silently writes and calls.
– Prefer compiletime and linktime errors to runtime errors.
– Ensure that nonlocal static objects are initialized before they’ re used.
– Pay attention to compiler warnings.
– Familiarize yourself with the standard library.
– Improve your understanding of C++.
Filed under Programming |
Comments are closed.