Concerning the GNU compiler, gcc has already a builtin option that enables additional warning to those of -Wall. The option is -Weffc++ and it's about the violations of some guidelines of Scott Meyerspublished in his books "Effective and More Effective C++".
In particular the option detects the following items:
Define a copy constructor and an assignment operator for classes with dynamically allocated memory.
Prefer initialization to assignment in constructors.
Make destructors virtual in base classes.
Have "operator=" return a reference to *this.
Don’t try to return a reference when you must return an object.
Distinguish between prefix and postfix forms of increment and decrement operators.
Never overload "&&", "||", or ",".