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;
面試陷阱。道理都懂,明白了也就沒什麼了。