Adresse de fonctions surchargées
L'utilisation d'un nom de fonction sans arguments retourne l'adresse de cette fonction.Par exemple :
int Func( int i, int j );
int Func( long l );
...
int (*pFunc) ( int, int ) = Func;
dans l'exemple précédent, la première version d' Func est sélectionnée, et son adresse est copiée dans pFunc.
Le compilateur détermine quelle version de la fonction à sélectionner en recherchant une fonction avec une liste d'arguments qui exactement correspond à celle de la cible.Les arguments dans les déclarations de fonctions surchargées sont trouvés par rapport à un des éléments suivants :
Un objet initialisé (comme indiqué dans l'exemple précédent)
le côté gauche d'une instruction d'assignation
un argument formel à une fonction
un argument formel à un opérateur défini par l'utilisateur
Un type de retour de la fonction
Si aucun correspondance exacte n'est trouvée, l'expression qui prend l'adresse de la fonction est ambiguë et une erreur est générée.
Notez que bien qu'une fonction non - membre, Func, est utilisé dans l'exemple précédent, les mêmes règles sont appliquées en prenant l'adresse des fonctions membres surchargées.