- 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} {
}
```