The one thing that is wrong or ill-advised is your assignment operator.

The assignment operator should work exactly the same way as the copy constructor, except it should return a reference to...