C++ 带有默认参数的结构,可选择在构造函数中更改

C++ Struct with default argument, optionally changeable in constructor

本文关键字:可选择 构造函数 结构 默认 参数 C++      更新时间:2023-10-16

假设我有以下结构。

struct vehicle
{
int    price;                           
char*  year;                           
char*  type; 
}

我想为它创建一个常规构造函数,这将允许我指定每个成员。

尽管如此,我想将成员"type"设置为默认为"car",只需要在构造函数中指定"类型",在车辆不是"汽车"的情况下。

首先,你没有说出来,但我感觉到一个小误解:结构体和类之间的区别只是约定俗成。结构是C++中的类。关键字structclass可用于声明类,唯一的区别是默认访问(根据结构具有所有公共的通用约定(。

这样一来,您可以简单地编写两个构造函数(我对字符串使用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 类初始值设定项,在第二个构造函数中使用 in 类初始值设定项。