Возможный дубликат:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?конструктор по умолчанию для Int
В ответ на this question говорят, что
Интс являются по умолчанию, возведенных как 0, так как если вы инициализировали их с помощью int(). Другие примитивные типы инициализируются аналогично (например, double(), long(), bool() и т. Д.).
Как раз в то время, когда я объяснял это коллеге, я составил следующий код: compiled (gcc-4.3.4) and ran и наблюдал за неожиданным поведением.
#include <iostream>
int main() {
int i();
std::cout << i << std::endl; // output is 1
}
Почему выход 1
но 0
?
Это объясняется в: [Почему это ошибка использовать пустой набор скобок вызвать конструктор без аргументов?] (HTTP: //stackoverflow.com/questions/180172/why-is-it-an-error-to-use-an-empty-set-of-brackets-to-call-a-constructor-with-no) –
Я удивил, что он даже компилируется, так как кажется, что вы наткнулись на [наиболее неприятный синтаксический разбор] (http://en.wikipedia.org/wiki/Most_vexing_parse). –
Поздравляем вас с обнаружением [наиболее неприятного разбора] (http://en.wikipedia.org/wiki/Most_vexing_parse). – dasblinkenlight