copy assignment operator
The operator= that overwrites an existing object with a copy of another.
T& operator=(const T&) replaces the current object's state with a copy of the other's; it must release what the object already held and survive self-assignment.