default values for default constructor
and operator[], operator+ is overloaded
[] can be used both in lhs and rhs.
+ is implemented as a friend function so that
it is with two parameters. lhs is mutated.
return type is object, but no return value.
[ this is not acceptable null value is returned ]