Это агрегатная инициализация или инициализация по умолчанию в C ++?

Рассмотрим следующую программу.

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

Это использует агрегатную инициализацию или инициализацию по умолчанию? Я сбит с толку.

1

Решение

Пустые скобки или фигурные скобки (T() или же T{}) выполнять инициализация значения. Исключением будет случай, когда тип является агрегатом, и в этом случае будет использоваться инициализация агрегата. поскольку int не является агрегатом, оно будет инициализировано значением, и, поскольку оно не является ни классом, ни массивом, инициализация значения будет выполнять нулевую инициализацию.

Вам было интересно, почему он не работает в C. Такой синтаксис просто не существует в C, см. этот ответ.

5

Другие решения

Совокупная инициализация является типом список инициализация, которая инициализирует сводные показатели. Агрегат — это объект типа массив или объект, характеристики которого определены на эта страница.

В этом случае тип инициализации наиболее вероятен инициализация значения.

2

По вопросам рекламы [email protected]