Начиная с C ++ 11, вы можете использовать делегирующие конструкторы : вы можете предоставить дополнительную перегрузку конструктора, которая принимает только std::string
для имени и делегатов в существующий конструктор, который принимает два аргумента, std::string
и int
. Затем просто передайте 0
в качестве второго аргумента делегированному конструктору:
Person(std::string name) : Person(name, 0) {}
То есть Person(std::string)
будет делегирующим конструктором , а существующий Person(std::string, int)
- делегирован один.
Другой подход - использовать аргумент по умолчанию для второго параметра существующего конструктора, который принимает оба std::string
и int
:
Person(std::string name, int age = 0) : name{name}, age{age} {}
Недостатком этого последнего подхода является то, что аргумент по умолчанию всегда компилируется непосредственно в клиентском коде. Это потребовало бы перекомпиляции клиентского кода при изменении аргумента по умолчанию.