next up previous
Next: Auflösung von Funktionsaufrufen (forts.) Up: Funktionen, Parameterübergabe, I/O bei Previous: Function Overloading

Auflösung von Funktionsaufrufen

Der Compiler ermittelt beim Übersetzen des Programmes, welche Funktion für einen Funktionsaufruf zu verwenden ist.

1.
bei einer exakten Übereinstimmung, rufe diese Funktion auf
2.
sonst, finde eine Übereinstimmung durch die Typ-Aufstieg (promotion) (vgl. Smith S 22 ff), also die Konvertierung von einem engeren Datentyp zu einen weiteren (char$\rightarrow$int, float$\rightarrow$double, $\ldots$)
3.
sonst, finde eine Übereinstimmung durch Konvertierung, also die Konvertierung von Datentypen der selben Größe vom weiteren zum engeren Datentyp (int$\rightarrow$float, float$\rightarrow$int,
int$\rightarrow$unsigned int $\ldots$)

4.
gebe eine Fehlermeldung bei keiner Übereinstimmung aus

Beispiel: Welche Funktion wird für welchen Funktionsaufruf verwendet?

        int i, j, k;
        float x, y, z;
        char c;

        f(i);
        f(i,j);
        f(x);
        f(c);  // promotion char -> int
        f(x, y, z);  // conversion float -> int


next up previous
Next: Auflösung von Funktionsaufrufen (forts.) Up: Funktionen, Parameterübergabe, I/O bei Previous: Function Overloading

© 1997 Gottfried Rudorfer, C++-AG, Lehrveranstaltungen, Abteilung für Angewandte Informatik, Wirtschaftsuniversität Wien, 11/11/1998