Freigeben über


Adresse von überladenen Funktionen

Durch Verwendung eines Funktionsnamens ohne Argumente wird die Adresse dieser Funktion zurückgegeben. Beispiel:

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

...

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

Im vorhergehenden Beispiel wird die erste Version von Func ausgewählt, und die entsprechende Adresse wird in pFunc kopiert.

Der Compiler bestimmt, welche Version der Funktion ausgewählt wird, indem er eine Funktion mit einer Argumentliste sucht, die exakt mit der des Ziels übereinstimmt. Die Argumente in den Deklarationen der überladenen Funktionen werden mit Folgendem abgeglichen:

  • Einem Objekt, das initialisiert wird (wie im vorherigen Beispiel gezeigt)

  • Der linken Seite einer Zuweisungsanweisung

  • Einem formalen Argument für eine Funktion

  • Einem formalen Argument für einen benutzerdefinierten Operator

  • Einem Funktionsrückgabetyp

Wenn keine genaue Übereinstimmung gefunden wird, ist der Ausdruck für die Adresse der Funktion mehrdeutig, und es wird ein Fehler ausgelöst.

Beachten Sie, dass obwohl im vorherigen Beispiel eine Nichtmemberfunktion, Func, verwendet wurde, die gleichen Regeln angewendet werden, wenn die Adresse von überladenen Memberfunktionen akzeptiert wird.

Siehe auch

Referenz

Überladen