Это обычная техника, обеспечивающая прохождение всех конструкторов через одну точку, поэтому вам нужно всего лишь изменить эту точку (она может иметь другое применение, но я о них не знаю).
Я видел это в вещах, которые используют аргументы по умолчанию, такие как:
class Rational {
private:
long numerator;
long denominator;
public:
void Rational (long n, long d) {
numerator = n;
denominator = d;
}
void Rational (long n): Rational (n,1) {}
void Rational (void): Rational (0,1) {}
void Rational (String s): Rational (atoi(s),1) {}
}
Имейте в виду синтаксис, у меня нет готового доступа к компилятору здесь, но основная цель - централизовать как можно больше кода в этом первом конструкторе.
Так, если, например, вы добавляете проверку, чтобы убедиться, что знаменатель больше нуля или числитель и знаменатель уменьшены с использованием метода наибольших общих делителей, то только должно произойти в одной точке твой код.