Prashant Mhatre

Make Money, Programming, Bollywood, Marathi

  • You are here: 
  • Home
  • Effective C++ Tips

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 out­of­memory 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, non­member functions, and friend functions.
– Avoid data members in the public interface.
– Use const whenever possible.
– Prefer pass­by­reference to pass­by­value.
– 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 non­const 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 Object­Oriented 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 “has­a” or “is­implemented­in­terms­of” 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 compile­time and link­time errors to runtime errors.
– Ensure that non­local 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.