考虑以下计划。
#include <iostream>
int main()
{
int a=int{};
std::cout<<a;
}
是使用聚合初始化还是默认初始化?我很困惑。
答案 0 :(得分:5)
空括号或大括号(T()
或T{}
)执行value initialization。例外情况是类型是聚合,在这种情况下将使用聚合初始化。由于int
不是聚合,因此它将被初始化值,并且由于它不是类或数组,因此值初始化将执行零初始化。
你想知道为什么它在C中没有用。这样的语法根本不存在于C中,参见this answer。
答案 1 :(得分:2)
聚合初始化是一种 list 初始化,它初始化聚合。聚合是类型为array的对象,或具有this page.
上定义的特征的对象在这种情况下,初始化的类型很可能是value initialization.
答案 2 :(得分:0)
从C ++ 11开始,通过与其他SO答案(例如:this或this)进行比较,我会说这是:
{'final_repayment_date_month': Period(data='2016-01', other='M'),
'lead_id': [21293, 21293],
'total': 21293}
{'final_repayment_date_month': Period(data='2016-02', other='M'),
'lead_id': [39539, 38702, 39448],
'total': 138982}
{'final_repayment_date_month': Period(data='2016-03', other='M'),
'lead_id': [39540, 39527, 39474],
'total': 257523}
)后跟int{}
)。从C++17开始,第二步应该消失,因为需要int a=int{}
来直接初始化int{}
。