Assignment usually has three parts
Check whether the left-hand and right-hand sides are the same object
- This is not just for efficiency; we must avoid deleting the object's contents and then trying to assign them!
Do the assignment (often like executing the destructor and copy constructor)
Return the left-hand side