1
有時候我寫如下代碼爲什麼你可以把一個函數原型放入函數中?
struct Bob
{
Bob() {}
};
int main()
{
Bob b();
}
我想要做的就是創建一個對象B,使用Bob的默認構造函數。要解決它,我必須刪除b後的括號。事實證明,編譯器將該行解釋爲函數原型,否則!
好吧,我可以理解,遵循規則。但是爲什麼你可以在函數裏面放一個函數原型呢?什麼目的?
這只是一個正常的聲明(不管它是多麼的令人頭疼)(http://en.wikipedia.org/wiki/Most_vexing_parse)。您必須在C++中的*聲明*和*定義*之間有所不同。 –
因爲那時標準會更長。 –
但爲什麼?我確信編譯器可以知道它何時位於函數體內,因此選擇其他解釋。 –