可能重复:
为什么使用空括号调用不带参数的构造函数是错误的?
在对这个问题的回答中,有人说
int 默认构造为 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
?