點++規範:§3.9/第九點basic.types§3.9/第九點,ISO標準C++規範
對象類型是一個(可能CV合格)型不是一個函數類型,而不是引用類型,而不是無效類型。
任何一個都能夠解釋這一點與編程。(它是如何失敗的)
點++規範:§3.9/第九點basic.types§3.9/第九點,ISO標準C++規範
對象類型是一個(可能CV合格)型不是一個函數類型,而不是引用類型,而不是無效類型。
任何一個都能夠解釋這一點與編程。(它是如何失敗的)
你使其更難比你有什麼打算?
在C++中有很多「事物」,比如函數,引用,指針,類等等。幾乎所有東西都有一個類型(例如變量)或者是一個類型(例如類),其中一些類型被稱爲「對象類型」。函數類型,引用類型和void不是「對象類型」。
請注意,void是一種特殊類型,其周圍有幾個特殊情況。特別是,它在函數返回類型中用來表示「無」,當用作void *(「指向未知類型的指針」)時表示「未知類型」。
「引用類型」應該是不言而喻的:將&添加到現有類型以獲取引用類型。 (所有類型都不能這樣做)。
函數類型也完全如它的聲音:函數的類型。例如:
void f();
int h(double);
這裏,f的類型爲void(),h的類型爲int(double)。 (函數類型相比於大多數其他類型的看起來很怪異。)
任何一個可以能夠與編程來解釋這一點。(它是如何失敗的)
彎腰向後,我想出了以下程序:
std::cout << sizeof(bool(int)) << std::endl;
// invalid application of 'sizeof' to a function type
std::cout << sizeof(void) << std::endl;
// invalid application of 'sizeof' to a void type
這是因爲:
的
sizeof
operato r得到其操作數表示的對象中的字節數。當施加到一個參考或引用類型,其結果是被引用類型的大小:
因爲我不能應用相同的推理引用。
但我們可以用事實陣列對象的序列:
int& array[10];
// error: declaration of 'array' as array of references
這是一個錯誤,因爲引用不是對象。現在開心?;)
可以請你用對象類型 – 1User 2011-01-24 10:36:31