Конструктор по умолчанию для 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
?
Ответы
Ответ 1
Самый неприятный синтаксис вступает в игру здесь. Вы фактически объявляете функцию i
, а не переменную int
. Он не должен даже компилироваться (если у вас нет функции i
, определенной где-то... вы?).
Чтобы инициализировать значение int, вам необходимо:
int i = int();