1) You can eliminate the necessity of a copy constructor/assignment operator by using std::vector instead of a C-style array.

2) binary operators (i.e. operator+) should be implemented as non-member functions.