Whenever you overload operators such as + or -, it is useful to support the corresponding += and -= as well. As opposed to a common belief, the compiler will not do that for you automatically:
class Date {//...Date stuff public: Date& operator + (const Date& d); //note: operator += not defined };Date d1, d2;d1 = d1 + d2; //fine; uses overloaded + and default assignment operatord1 += d2; //compile time error: 'no user defined operator += for class Date'