Подтвердить что ты не робот

что делает int() в C++?

Следующий код может передать компиляцию и будет печатать 0 на консоли. Я видел аналогичный код в STL. Мой вопрос в том, имеет ли тип int в C++ конструктор? Является ли int() вызовом некоторой определенной функции?

int main()
{
    int a = int();
    cout<<a<<endl;
    return 0;
}
4b9b3361

Ответ 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()

Ответ 2

int() является construstor класса int, он будет initalise ур переменной a, значение по умолчанию целого, то есть 0. Даже если вы не вызываете конструктор явно, конструктор defualt, т.е. int(), неявно вызывается для инициализации переменной. иначе в переменной будет значение мусора.

Ответ 3

int() - целочисленный конструктор, так что, другими словами, он инициализирует переменную со значением по умолчанию 0