struct Foo
{
Foo(){}
Foo(int){}
void fun(){}
};
int main(void)
{
Foo a(10); //语句1
a.fun(); //语句2
Foo b(); //语句3
b.fun(); //语句4
return 0;
}
上述四个语句,你认为去掉哪句后,可以通过编译器?
答案是语句4.
看到Foo b(); 愰忽间感觉这是在使用默认构造函数来定义变量。
其实,这是在main函数内部声明了一个返回值为Foo类型的函数。该函数的形参列表为空。函数名为b
如果想要使用默认构造函数来定义变量b,则应为 Foo b;
面试陷阱。道理都懂,明白了也就没什么了。