定义中结构成员初始化的术语是什么?

时间:2016-08-10 22:59:12

标签: c++

考虑以下示例程序。

#include <stdio.h>

struct FooBar {
    bool test{true}; // What is this syntax called?
};

int main() {
    FooBar bar;
    printf("%d\n", bar.test);
}

带注释的行初始化语法的名称是什么?

3 个答案:

答案 0 :(得分:2)

它为非静态数据成员称为大括号或等于初始值。现在,它被称为默认成员初始化程序(感谢P0134)。

答案 1 :(得分:2)

目前还不清楚您的问题具体是什么:语法或功能。

如果我正确理解了您的问题的范围,标准会毫不犹豫地将此功能称为非静态数据成员的#34; 大括号或等号初始化&#34;。是的,整件事。

因此,语法是 brace-or-equal-initializer 。它恰好与您的示例中的非静态数据成员一起使用。

答案 2 :(得分:1)

在语法上,初始化程序是一个大括号或等于初始化程序,但这很麻烦,而且这个结构现在也有一个合适的技术术语:默认成员初始化程序< / em>(参见[class.mem] / 8)。这个术语是在C ++ 14之后引入的,目前正处于工作草案中。