Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [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 typname
  ' Typdeklarationen
  DECLARE [STATIC] OPERATOR Operatorname ([Parameterliste]) [AS Datentyp]
END TYPE

Syntax B:

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

Typ: Prozedur
Kategorie: Programmorganisation

OPERATOR deklariert oder definiert einen überladenen Operator. Der Befehl kann im Zusammenhang mit BefehlsreferenzeintragTYPE, BefehlsreferenzeintragCLASS und BefehlsreferenzeintragUNION eingesetzt werden.

Als 'Operatorname' sind folgede Operatoren erlaubt:

Zuweisung:unärer Operator:binärer Operator:Iterator:
  • BefehlsreferenzeintragLET
  • +=
  • -=
  • *=
  • /=
  • \=
  • MOD=  
  • SHL=
  • SHR=
  • AND=
  • OR=
  • XOR=
  • IMP=
  • EQV=
  • ^=

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.

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

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
BefehlsreferenzeintragTYPE (UDT), BefehlsreferenzeintragUNION


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