Indirizzo di funzioni in overload
L'utilizzo di un nome di funzione senza argomenti restituisce l'indirizzo di quella funzione. Ad esempio:
int Func( int i, int j );
int Func( long l );
...
int (*pFunc) ( int, int ) = Func;
Nell'esempio precedente, la prima versione di Func è selezionata e il relativo indirizzo viene copiato in pFunc.
Il compilatore determina quale versione della funzione selezionare trovando una funzione con un elenco di argomenti che corrisponde esattamente a quella della destinazione. Gli argomenti nelle dichiarazioni delle funzioni in overload vengono messi in corrispondenza con uno dei seguenti elementi:
Un oggetto inizializzato (come illustrato nell'esempio precedente)
Il lato sinistro di un'istruzione di assegnazione
Un argomento formale a una funzione
Un argomento formale a un operatore definito dall'utente
Un tipo restituito dalla funzione
Se non è presente una corrispondenza esatta, l'espressione che accetta l'indirizzo della funzione è ambigua e viene generato un errore.
Si noti che anche se nell'esempio precedente è stata utilizzata una funzione non membro, Func, vengono applicate le stesse regole quando si accetta l'indirizzo delle funzioni membro in overload.