C ++:究竟是什么":"在这儿干?

时间:2015-05-22 01:52:32

标签: c++

晚上好!

我正在阅读编程:原理和使用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;
};

2 个答案:

答案 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。它初始化正在构造的对象的值。