【问题标题】:what is a brace-or-equals initializer?什么是大括号或等号初始化程序?
【发布时间】:2018-12-11 12:35:54
【问题描述】:

我知道这个问题很简单,但它是如此简单,我没有找到任何资源来定义我什么是“大括号或等号”。

这些都是大括号或等号初始化器吗?

++++++++++++++++++++++++++++++++++++++++++

int foo= 42;

int foo{42};

int foo= {42};

int foo[]{41,42,43};

int foo[]={41,42,43};

struct Foo{
    int data= 42;
};

考虑到上述结构,data 是否已初始化或不,在这两种情况下:

Foo foo{42}
Foo foo= {42}
Foo foo{.data=42}
Foo foo= {.data=42}

++++++++++++++++++++++++++++++++++++++++++

【问题讨论】:

  • 一些可能的重复目标:12
  • (下次发帖只问1个问题。另一个是GCC的语言扩展,不是标准的C++)
  • user202729,你是说最后一个例子吗? en.cppreference.com/w/cpp/language/aggregate_initialization 这看起来像标准 c++ 而且你给出的 stackoverflow 链接没有使用“大括号或等于”这个词
  • "(C++20 起)"
  • 嗯,确实还不是官方的。我只把那些打算详尽无遗的人放了

标签: c++ initializer


【解决方案1】:

这就是它在罐头上所说的字面意思:= something(“等于”)或{ something }(“大括号”)形式的初始化程序。换句话说,它排除了( something ) 形式的初始化器。

名称来自构造的语法非终结符。

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2018-03-06
    相关资源
    最近更新 更多