晚上好!
我正在阅读编程:原理和使用C ++编程,我发现这段示例代码在函数初始化期间对我很感兴趣。对于已经使用C ++一段时间的C ++程序员来说,使用这个函数初始化语法有何帮助?它是否有助于您的工作流程,对程序员来说是否更具可读性,或者只是用C ++做事的另一种秘密方式?它对程序性能有帮助吗?
我想知道更多,而且我使用糟糕的谷歌技能找不到任何东西。
class Year {
static const int min = 1800;
static const int max = 2200;
public:
class Invalid {}; //this thing throws an error when called
Year(int x) : y(x) { if (x < min || max <= x) throw Invalid(); } //what is : ??
int year() { return y; }
private:
int y;
};
答案 0 :(得分:1)
在这种情况下,:
是用于初始化列表的语法。初始化列表允许调用类的元素的构造函数,而无需调用默认构造函数然后分配给它们。
您可以将构造函数重写为
Year(int x) :
^ Indicates start of initializer list
y(x)
^^^ Initializes Y
{
if (x < min || max <= x) throw Invalid();
}
您可以阅读有关初始化列表here的更多信息。
答案 1 :(得分:0)
这是initializer list。它初始化正在构造的对象的值。