共用方式為


多載函式的位址

 

發佈時間: 2016年4月

若使用不帶引數的函式名稱,會傳回該函式的位址。 例如:

int Func( int i, int j );
int Func( long l );

...

int (*pFunc) ( int, int ) = Func;

在前述範例中,選取了 Func 的第一個版本,並將其位址複製到 pFunc。

編譯器會尋找帶引數清單且與目標引數清單完全相符的函式,以判斷應選取哪一個版本的函式。 編譯器會根據下列其中一個條件比對多載函式宣告中的引數:

  • 將初始化的物件 (如前述範例所示)

  • 指派陳述式的左側

  • 函式的型式引數

  • 使用者定義運算子的型式引數

  • 函式傳回類型

如果找不到完全相符的結果,採用函式位址的運算式即為模稜兩可的運算式,並會產生錯誤。

請注意,雖然 Func 是非成員函式,但在前述範例中,採用多載成員函式的位址時仍需遵守相同的規則。

請參閱

多載 (c + +)