Vorbei Verschiedene Arten an Funktionen in C ++

Floating-Point-Variablen und Variablen unterschiedlicher Größe in C ++ funktioniert auf die gleiche Art und Weise geführt werden, dass int

Variablen wie im folgenden Code-Schnipsel demonstriert. Dieses Beispiel Schnipsel übergibt den Wert der Variablen darg zusammen mit const double 0.0 auf die Funktion maximumFloat ().

// MaximumFloat - gibt die größere von zwei schwimmenden // Punkt argumentsdouble maximumFloat (Doppel d1, Doppel d2) {if (d1> d2) {return D1-} return D2-} void otherFunction () {double Darg = 1,0-double dNonNegative = maximumFloat (darg, 0.0) - // ... Funktion geht weiter ...

Eine Überlastung Funktionsnamen

Die Art der Argumente sind ein Teil des erweiterten Name der Funktion. So ist die vollständige Name des früheren Beispiel Funktion ist maximumFloat (double, double). Sie kann durch die Anzahl von Argumenten zwischen zwei Funktionen unterscheiden. Sie können auch durch die Art der Argumente zwischen zwei Funktionen unterscheiden, wie im folgenden Beispiel gezeigt:

Doppelmaximum (Doppel d1, Doppelbett2) -intmaximum (int n1, n2 int) -

Wenn Sie die Deklaration auf diese Weise tun, dann ist es klar, dass der Anruf max (1, 2) bezieht sich auf Maximum (int, int), während des Gesprächs Maximum (3.0, 4.0) bezieht sich auf Maximum (double, double).

Definieren von Funktionen, die den gleichen Namen, aber unterschiedlichen Argumente aufgerufen Funktion Überlastung.

Sie können auch durch die Signedness und Länge unterscheiden:

int max (int n1, n2 int) -long Maximum (lange l1, lange l2) -unsigned Maximum (unsigned un1, unsigned UN2) -

Glücklicherweise ist dies in der Praxis selten notwendig.

Mixed-Mode-Überlastung

Die Regeln können wirklich seltsam erhalten, wenn die Argumente der Anruf nicht genau Line-up mit den Erklärungen. Betrachten Sie das folgende Beispiel-Code-Snippet:

Doppelmaximum (Doppel d1, Doppel d2) -intmaximum (int n1, n2 int) -Lücke otherFunction () {// welche Funktion durch die folgende Doppel dNonNegative = maximale aufgerufen wird (Darg, 0) - // ... Funktion geht weiter...

Hier sind die Argumente nicht Schlange stehen genau mit jeder Erklärung. Es gibt kein Maximum (double, int). C ++ vernünftigerweise nehmen Sie eine der folgenden drei Optionen:

  • Fördern Sie die 0 bis ein doppelt und Call Maximum (double, double).

  • Herabstufen der Doppel auf ein int und rufen Maximum (int, int).

  • Werfen Sie ihre elektronische Hände nach oben und einen Compiler-Fehler melden.

Die allgemeine Regel ist, dass C ++ Argumente fördern, um ein Spiel zu finden, aber nicht automatisch ein Argument degradieren. Sie können jedoch nicht immer auf diese Regel zu zählen.

Verlassen Sie sich nicht auf C ++, um herauszufinden, was Sie meine- stattdessen die notwendigen Konvertierungen explizit zu machen:

nichtig otherFunction (int nArg1, Doppel dArg2) {// eine explizite Umwandlung verwenden, um sicherzustellen, dass die richtige Funktion // calleddouble dNonNegative = Maximum ((double) nArg1, dArg2) ist -

Jetzt ist es klar, dass Sie meinen zu nennen Maximum (double, double).

Menü