多載函式的限制
有幾個限制管理多載函式中可接受的群:
在一組多載函式中的任何兩個函式都必須具有不同的引數清單。
多載具有相同的型別,並根據侵擾的傳回型別引數清單的函式會產生錯誤。
Microsoft 專有的
您可以多載 new 運算子僅為基礎的傳回型別 — 特別是,為基礎的指定的記憶體模型修飾詞。
結束 Microsoft 特定
成員函式不能多載只依據最有一個是靜態和其他的 nonstatic。
typedef宣告不會定義新的型別 ; 就是引入現有型別的同義字。它們不會影響多載的機制。請考慮下列程式碼:
typedef char * PSTR; void Print( char *szToPrint ); void Print( PSTR szToPrint );
上述的兩個函式有相同的引數清單。PSTR是類型 char *。在成員的範圍內,這段程式碼會產生錯誤。
列舉型別是不同的型別,而且可以用來區分多載函式。
型別 「 陣列 」 和 「 指標 」 會視為相同用於區分多載函式。這是只對單一 dimensioned 的陣列,則為 true。因此,下列多載函式衝突並產生錯誤訊息:
void Print( char *szToPrint ); void Print( char szToPrint[] );
若是乘 dimensioned 的陣列,第二個和後續所有的維度視為型別的一部分。因此,它們用於區分多載函式:
void Print( char szToPrint[] ); void Print( char szToPrint[][7] ); void Print( char szToPrint[][9][42] );