Code for one constructor can call another in the [[Constructor Initialization Lists|initialization list]]
Avoids duplicating code -> less bugs
Less detailed constructors can delegate to most verbosely defined constructor
```cpp
class Player()
{
private:
std::string name;
int health;
int xp;
public:
Player();
Player(std::string name_val);
Player(std::string name_Val, int health_val, int xp_val);
}
// no-args constructor
Player::Player()
: Player {"None", 0, 0} {
}
// single arg constructor
Player::Player(std::string name_val)
: Player {name_val, 0, 0} {
}
// delegate to three arg constructor
Player::Player(std::string name_val, int health_val, int xp_val)
: name{name_val}, health{health_val}, xp{xp_val} {
}
```