copy constructor is called when the new object created from an existing object as copy of the existing object
and
assignment operator is called when an already initialized object is assigned a new value from another existing object