Ответ 1
В данном контексте,
int a = int(); // 1)
он value-инициализирует a
, так что он содержит значение 0
. Этот синтаксис не требует наличия конструктора для встроенных типов, таких как int
.
Обратите внимание, что эта форма необходима, поскольку следующее анализируется как объявление функции, а не инициализация:
int a(); // 2) function a() returns an int
В С++ 11 вы можете добиться инициализации значения с более интуитивным синтаксисом:
int a{}; // 3)
Редактировать в этом конкретном случае мало пользы от использования 1) или 3) более
int a = 0;
но рассмотрим
template <typename T>
void reset(T& in) { in = T(); }
тогда
int i = 42;
reset(i); // i = int()