函式的兩個要素:引數與返回值。
如果同名函式的引數不同(包括型別、順序不同),那麼容易區別出它們是不同的函式。
如果同名函式僅僅是返回值型別不同,有時可以區分,有時卻不能。例如:
void function(void);
int function (void);
上述兩個函式,第乙個沒有返回值,第二個的返回值是int 型別。如果這樣呼叫函式:
int x = function ();
則可以判斷出function 是第二個函式。問題是在c++/c 程式中,我們可以忽略函式的返回值。在這種情況下,編譯器和程式設計師都不知道哪個function 函式被呼叫。
所以只能靠引數而不能靠返回值型別的不同來區分過載函式。編譯器根據引數為每個過載函式產生不同的內部識別符號。
附圖:
在C 中,為什麼建構函式不能有返回值?
1 假設有乙個類c,有如下定義 class c c int i x i private int x 如果c的建構函式可以有返回值,比如int int c x 0 那麼下列 會發生什麼事呢?c c c 此時c.x 1!很明顯,c 呼叫了c的無引數建構函式。該建構函式返回int值1。恰好c有乙個但引數建...
為什麼建構函式沒有返回值?
意見 1 我認為建構函式隱含的返回值就是this,因為建構函式是在類的物件產生時自動呼叫。建構函式被呼叫也就意味著產生了乙個物件,而this指標是與物件實體相關聯的,所以我認為它返回的就是this。舉例如下 class a a aa 此語句導致類a的建構函式a 被自動呼叫返回乙個首位址,系統就在記憶...
為什麼 HANDLE 返回值不同
如果你注意各種返回 handle 值的函式,你會發現它們有些返回 null 如 createthread 而有些則返回 invalid handle value 如 createfile 你不得不查詢文件找出每種函式在失敗時返回什麼。為什麼返回值不統一?如你所猜測,是歷史原因。這些值是用於相容16位...