Во-первых, вы этого не сказали, но я чувствую небольшое недоразумение: разница между структурой и классом - это просто соглашение. Структуры - это классы в C ++. Ключевые слова struct
и class
могут использоваться для объявления класса, и единственная разница - это доступ по умолчанию (в соответствии с общим соглашением, согласно которому все структуры имеют publi c).
Из-за этого вы можете просто написать два конструктора (я использую std::string
для строк, потому что считаю c -строки чрезвычайно трудными для работы):
struct vehicle
{
int price;
std::string year;
std::string type;
vehicle(int p, const std::string& y, const std::string& t) : price(p),year(y),type(t) {}
vehicle(int p, const std::string& y) : price(p),year(y),type("car") {}
};
Вы также можете использовать в инициализаторе класса (они поставляются с C ++ 11):
struct vehicle
{
int price;
std::string year;
std::string type{"car"};
vehicle(int p, const std::string& y, const std::string& t) : price(p),year(y),type(t) {}
vehicle(int p, const std::string& y) : price(p),year(y) {}
};
Список инициализаторов в конструкторе побеждает инициализатор класса in, а во втором конструкторе инициализатор класса используется.