结构构造函数语法

Cem*_*mre 14 c++ struct

可能重复:
C++构造函数名后的冒号是做什么的?

我在网上找到了下面的例子,但是构造函数的语法让我有点困惑,特别是:符号.有人可以给我一个简短的解释吗?谢谢.

struct TestStruct {
    int id;
    TestStruct() : id(42)
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

dee*_*see 28

构造函数初始化id42调用它的时间.它被称为初始化列表.

在您的示例中,它等同于

struct TestStruct {
    int id;
    TestStruct()
    {
        id = 42;
    }
};
Run Code Online (Sandbox Code Playgroud)

你也可以和几个成员一起做

struct TestStruct {
    int id;
    double number; 
    TestStruct() : id(42), number(4.1)
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

当构造函数的唯一目的是初始化成员变量时,它很有用

struct TestStruct {
    int id;
    double number; 
    TestStruct(int anInt, double aDouble) : id(anInt), number(aDouble) { }
};
Run Code Online (Sandbox Code Playgroud)

  • 很酷,谢谢,但它不仅"有用",而且对于必须非常简单地初始化的变量,例如基础子对象,常量或引用,它是完全必需的. (4认同)