C++ 这是C+中的聚合初始化还是默认初始化+;?

C++ 这是C+中的聚合初始化还是默认初始化+;?,c++,initialization,aggregate-initialization,C++,Initialization,Aggregate Initialization,考虑以下程序 #include <iostream> int main() { int a=int{}; std::cout<<a; } #包括 int main() { int a=int{}; std::cout空括号或大括号(T()或T{})执行。例外情况是类型为聚合的情况,在这种情况下将使用聚合初始化。由于int不是聚合,它将被值初始化,并且由于它不是类或数组,值初始化将执行零初始化 您想知道为什么它在C中不起作用。这种语法在C中根本不存在,请参

考虑以下程序

#include <iostream>
int main()
{
    int a=int{};
    std::cout<<a;
}
#包括
int main()
{
int a=int{};

std::cout空括号或大括号(
T()
T{}
)执行。例外情况是类型为聚合的情况,在这种情况下将使用聚合初始化。由于
int
不是聚合,它将被值初始化,并且由于它不是类或数组,值初始化将执行零初始化


您想知道为什么它在C中不起作用。这种语法在C中根本不存在,请参见。

空括号或大括号(
t()
t{}
)执行。例外情况是类型为聚合的情况,在这种情况下将使用聚合初始化。由于
int
不是聚合,它将被值初始化,并且由于它不是类或数组,值初始化将执行零初始化


您想知道为什么它在C中不起作用。这种语法在C中根本不存在,请参阅。

聚合初始化是一种列表初始化类型,用于初始化聚合。聚合是一种类型为array的对象,或具有在上定义的特征的对象


在这种情况下,初始化的类型很可能是

聚合初始化是一种列表初始化类型,用于初始化聚合。聚合是一个数组类型的对象,或具有上定义的特征的对象


在这种情况下,初始化的类型很可能是C++11以来的

,与其他SO答案(例如:or)相比,我认为这是:

  • 一个(
    int{}
    )后跟
  • a(
    inta=int{}

  • 顺便说一句,从开始,第二步应该消失,因为从C++11开始,直接初始化
    a
    需要
    int{}
    ,与其他SO答案(例如:or)相比,我认为这是:

  • 一个(
    int{}
    )后跟
  • a(
    inta=int{}

  • 顺便说一下,从开始,第二步应该消失,因为直接初始化
    int{}
    需要
    a

    @downvorters:谁投了反对票?为什么投反对票?有什么问题吗?
    int
    不是聚合。这是默认初始化。聚合初始化应该是
    int a[]={1,2,3}
    @CoryKramer:那么,为什么它在C中不起作用呢?@CoryKramer这不是默认的初始化。它(
    int{}
    )是列表初始化,在本例中执行值初始化。@Downvoters:谁投了反对票?为什么投反对票?有什么问题吗?
    int
    不是聚合。它是默认初始化。聚合初始化应该是
    int a[]={1,2,3}
    @CoryKramer:那么,为什么它在C中不起作用呢?@CoryKramer这不是默认的初始化。它(
    int{}
    )是列表初始化,在本例中执行值初始化。感谢解释和链接给出的好答案。感谢解释和链接给出的好答案。