Registriert seit: 3. Jan 2006
509 Beiträge
Delphi 7 Enterprise
|
AW: Overload: Merkwürdige Funktionswahl
2. Apr 2012, 10:46
Also die Reihenfolge in der die Funktionen definiert sind ändert nichts. Der Compiler bevorzugt hier wirklich die Byte-Funktion. Ich frag mich nur warum...
Edit:
Wenn man das Problem undreht, also man hat einen "kleinen" Datentypen und verschiedene überladene Funktionen mit "größeren" Datentypen, dann macht der Compiler alles richtig. Er schaut als erstes nach dem Vorzeichen, bevorzugt also bei Vorzeichenlosen Datentypen auch vorzeichenlose Funktionen und vice versa. Und dann verwendet er die Funktion mit dem kleinstmöglichen Datentyp.
Z.B beim Shortint bevorzugt er Funktionen in dieser Reihenfolge:
Shortint
Smallint
Longint
Int64
Byte
Word
Longword
Wobei das ein besonderes Beispiel ist, da er bei anderen Datentypen sich oft nicht entscheiden kann, z.B:
Datentyp: Int64
Funktion1: Shortint
Funktion2: Byte
ergibt den Fehler: "Doppeldeutiger überladener Aufruf von 'Funktionsname'".
Wobei es hier doch auch wieder logisch wäre sich für den Shortint zu entscheiden...
Geändert von blablab ( 2. Apr 2012 um 11:07 Uhr)
|