Buchempfehlung
MySQL kurz & gut
MySQL kurz & gut
Das preiswerte Taschen- buch stellt MySQL-rele- vante Inhalte systematisch und knapp dar, sodass es sich optimal zum Nach- schlagen beim Pro- grammieren eignet. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - OPERATOR

Referenz-Navigation

 

Syntax A:

{ TYPE | CLASS | UNION } Typenname
  ' Typdeklarationen
  DECLARE [STATIC] OPERATOR Operatorname ([Parameterliste]) [AS Datentyp]
END { TYPE | CLASS | UNION }

Syntax B:

[STATIC] OPERATOR Typename.Operatorname ([Parameterliste]) [AS Datentyp]

Typ: Prozedur
Kategorie: Operatoren

OPERATOR deklariert oder definiert einen überladenen Operator. Der Befehl kann im Zusammenhang mit BefehlsreferenzeintragTYPE, BefehlsreferenzeintragCLASS, BefehlsreferenzeintragUNION und (mit Einschränkungen) BefehlsreferenzeintragENUM eingesetzt werden.

Als 'Operatorname' sind folgende Operatoren erlaubt:

Zuweisung:unärer Operator:binärer Operator:Iterator:
  • BefehlsreferenzeintragLET
  • +=
  • -=
  • *=
  • &=
  • /=
  • \=
  • MOD=  
  • SHL=
  • SHR=
  • AND=
  • OR=
  • XOR=
  • IMP=
  • EQV=
  • ^=
  • Befehlsreferenzeintrag+ (Addition)
  • Befehlsreferenzeintrag- (Subtraktion)
  • Befehlsreferenzeintrag* (Multiplikation)
  • Befehlsreferenzeintrag& (Stringverknüpfung)
  • Befehlsreferenzeintrag/ (Division)
  • Befehlsreferenzeintrag\ (Integerdivision)
  • BefehlsreferenzeintragMOD
  • BefehlsreferenzeintragSHL
  • BefehlsreferenzeintragSHR
  • BefehlsreferenzeintragAND
  • BefehlsreferenzeintragOR
  • BefehlsreferenzeintragXOR
  • BefehlsreferenzeintragIMP
  • BefehlsreferenzeintragEQV
  • Befehlsreferenzeintrag^ (Exponent)
  • = (Vergleich)
  • <>
  • <
  • >
  • <=
  • >=

Eine Überladung der unären Operatoren zur BefehlsreferenzeintragPointer-Dereferenzierung * und der BefehlsreferenzeintragPointer-Referenzierung -> arbeitet zur Zeit nicht korrekt.

Hinweis: LET verweist auf den Zuweisungsoperator wie in LET a=b (das Schlüsselwort LET wird im üblichen Gebrauch weggelassen)

Ein Beispiel zur Überladung von Iteratoren wird in diesem Tutorial behandelt.

Beschreibung:
Mit OPERATOR kann festgelegt werden, wie die oben genannten Operatoren arbeiten sollen, wenn mindestens eines der Argumente dem Datentyp des TYPE-, CLASS-, ENUM- oder UNION-Blocks entspricht.

Operatoren sind Funktionen. Der Operator '+' arbeitet wie
FUNCTION plus(a AS datentyp, b AS datentyp) AS datentyp
Operatoren können überladen werden, um verschiedene Datentypen als Parameter zu akzeptieren. Nur der CAST-Operator kann auch dazu überladen werden, um verschiedene Datentypen zurückzugeben.

Manche Operatoren werden innerhalb des Typs oder der Klasse deklariert, manche außerhalb. Dabei gilt:

Sämtliche Definitionen der Operatoren stehen außerhalb der TYPE- bzw. CLASS-Definition.

Da innerhalb eines ENUM keine Deklarationen stehen dürfen, ist hier auch nur die Überladung von unären und binären Operatoren möglich.

Beispiel:

TYPE Vector
  AS SINGLE x, y
  ' gibt einen String zurück, der die Vektordaten enthält.
  DECLARE OPERATOR CAST AS STRING
End Type

' erlaubt die Addition zweier Vektoren
DECLARE OPERATOR + (v1 AS Vector, v2 AS Vector) AS Vector

OPERATOR Vector.CAST () AS STRING
  RETURN "(" + STR(x) + ", " + STR(y) + ")"
END OPERATOR

OPERATOR + (v1 AS Vector, v2 AS Vector) AS Vector
  RETURN TYPE<Vector>( v1.x + v2.x, v1.y + v2.y )
END OPERATOR

DIM a AS Vector = TYPE<Vector>( 1.2, 3.4 )
DIM b AS Vector = TYPE<Vector>( 8.9, 6.7 )

PRINT "a = "; a
PRINT "b = "; b
PRINT "a + b = "; a + b
SLEEP

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
BefehlsreferenzeintragTYPE (UDT), BefehlsreferenzeintragUNION, BefehlsreferenzeintragAusdrücke und Operatoren, BefehlsreferenzeintragObjektorientierung


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 23.09.2007 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 08.04.2015 von Redakteurnemored gespeichert.
  Versionen Versionen