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

Конструктор по умолчанию для int

Возможный дубликат:
Почему это ошибка при использовании пустого набора скобок для вызова конструктора без аргументов?

В ответе этот вопрос он сказал, что

ints по умолчанию сконфигурирован как 0, как если бы вы инициализировали их с помощью функции int(). Другие примитивные типы инициализируются аналогично (например, double(), long(), bool() и т.д.).

Пока я объяснял это коллеге, я составил следующий код: скомпилирован (gcc-4.3.4) и запустил, и наблюдал неожиданное поведение.

#include <iostream>

int main() {
  int i(); 
  std::cout << i << std::endl; // output is 1
}

Почему вывод 1, но 0?

4b9b3361

Ответ 1

Самый неприятный синтаксис вступает в игру здесь. Вы фактически объявляете функцию i, а не переменную int. Он не должен даже компилироваться (если у вас нет функции i, определенной где-то... вы?).

Чтобы инициализировать значение int, вам необходимо:

int i = int();