In object-oriented programming, object copying is the act of creating and initializing a new object based on an existing object's state. The various ways to implement copy have implications that a programmer needs to understand in order to write a computer program that is correct and performant.
Copying allows for the emergent state of the original object – represented by its internal state – to be used and even modified without affecting the original object.