There are a few things that I almost always do when I put a class together in C++.
1) Virtual Destructor 2) Copy constructor and assignment operator (I either implement them in terms of a private function called Copy(), or declare them private and thus explicitly disallow the compiler to auto generate them).
What things do you find are almost always useful?
I find turning on the gcc flags
-Wall,-Werror, and (this is the fun one)-Weffc++help catch a lot of potential problems. From the gcc man page: