- memberwise copy - each data member copied from source object - if data member is a pointer - pointer is copied, not what pointer points to - if destructor called - memory released - pointer points to released memory ```cpp Player::Player(const Player &source) : name{source.name}, health{source.health}, xp{source.xp} { } ```cpp Player::Player(const Player &source) : name{source.name}, health{source.health}, xp{source.xp} { } ```