Рассмотрим следующую программу.
#include <iostream>
int main()
{
int a=int{};
std::cout<<a;
}
Это использует агрегатную инициализацию или инициализацию по умолчанию? Я сбит с толку.
Пустые скобки или фигурные скобки (T()
или же T{}
) выполнять инициализация значения. Исключением будет случай, когда тип является агрегатом, и в этом случае будет использоваться инициализация агрегата. поскольку int
не является агрегатом, оно будет инициализировано значением, и, поскольку оно не является ни классом, ни массивом, инициализация значения будет выполнять нулевую инициализацию.
Вам было интересно, почему он не работает в C. Такой синтаксис просто не существует в C, см. этот ответ.
Совокупная инициализация является типом список инициализация, которая инициализирует сводные показатели. Агрегат — это объект типа массив или объект, характеристики которого определены на эта страница.
В этом случае тип инициализации наиболее вероятен инициализация значения.