struct SalesData
{
SalesData() = default;
SalesData(const std::string &s) : bookNo(s) {}
std::string bookNo;
unsigned unitsSold = 0;
double revenue = 0;
};
首先请明确一点:因为该构造函数不接受任何实参,所以它是一个默认构造函数。我们定义这个构造函数的目的仅仅是因为我们既需要其他形式的构造函数,也需要默认的构造函数,我们希望这个函数的作用完全等同于之前使用的合成默认构造函数。
在 C++ 11 新标准中,如果我们需要默认的行为,那么可以通过在参数列表后面写上 = default 来要求编译器生成构造函数。其中,= default 既可以和声明一起出现在类内部(内联),也可以作为定义出现在类外部(非内联)。
注意:
上面的默认构造函数之所以对 SalesData 有效,是因为我们为内置类型的数据成员提供了初始值。如果我们的编译器不支持类内初始值,那么你的默认构造函数就应该使用构造函数初始值列表来初始化类的每个成员。
网友评论