可能重复:
为什么使用空括号调用不带参数的构造函数是错误的?
让我们有这个代码
class Foo {
Foo(int) { }
};
然后我们有结果:
int main() {
Foo f1 = Foo(5); // 1: OK, explicit call
Foo f2(5); // 2: OK, implicit call
Foo f3(); // 3: no error, "f3 is a non-class type Foo()", how so?
Foo f4(f1); // 4: OK, implicit call to default copy constructor
Foo f5; // 5: expected error: empty constructor missing
}
您能解释一下案例3中发生了什么吗?