default values for default constructor
and operator[], operator+ is overloaded
[] can be used both in lhs and rhs.
+ is implemented as a member function so that
it is with one parameter. lhs is mutable.
[you shouldn't attempt to return an object unless there
is a need for it.]
return type is object and lhs object is returned.