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 non-const parameters. lhs is mutated. return type is reference.