一個規范的實現可能提供許多版本的main(),但它們都必須返回int類型。main()返回的int值,是程序返回一個值給調用它的系統的方式。在那些不具備這種方式的系統中,返回值被忽略了,但這并不使“void main()”在C++或C中成為合法的。即使你的編譯器接受了“void main()”,也要避免使用它,否則你將冒著被C和C++程序員視為無知的風險。
在C++中,main()并不需要包含顯式的return語句。在這種情況下,返回值是0,表示執行成功。例如:
#include<iostream>
int main()
{
std::cout << "This program returns the integer value 0\n";
}
注意,無論是ISO C++還是C99,都不允許在聲明中漏掉類型。那就是說,與C89和ARM C++形成對照,當聲明中缺少類型時,并不會保證是“int”。于是:
#include<iostream>
main() { /* ... */ }
是錯誤的,因為缺少main()的返回類型。
為什么我不能重載點符號,::,sizeof,等等?
大多數的運算符能夠被程序員重載。例外的是:
. (點符號) :: ?: sizeof
并沒有什么根本的原因要禁止重載?:。僅僅是因為,我沒有發現有哪種特殊的情況需要重載一個三元運算符。注意一個重載了 表達式1?表達式2:表達式3 的函數,不能夠保證表達式2:表達式3中只有一個會被執行。
Sizeof不能夠被重載是因為內建的操作(built-in operations),諸如對一個指向數組的指針進行增量操作,必須依靠它?紤]一下:
X a[10];
X* p = &a[3];
X* q = &a[3];
p++; // p指向a[4]
// 那么p的整型值必須比q的整型值大出一個sizeof(X)
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/