This is a convention that you should follow (unless you have great reason not to).
class Foo { public: Foo& operator=(const Foo& rhs) { // ... return *this; } // And +=, -=, etc. Foo& operator+=(const Foo& rhs) { // ... return *this; } // And assignment from other types, too. Foo& operator=(int rhs) { // ... return *this; } }