Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [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!

Tutorial

Überladen von Prozeduren und Operatoren (Overload)

von RedakteurMODSeite 3 von 9

Nun aber genug von den Grundlagen und ab in die interessanten Gebiete der Verwendung.
Overloading ist unbezahlbar, wenn es um BefehlsreferenzeintragUDTs geht und als allererstes: Das Keyword 'OverLoad' ist dabei NICHT nötig, da alle Member eines BefehlsreferenzeintragTypes automatisch überladen werden.

Also bauen wir uns mal ein BefehlsreferenzeintragUDT:

Type eigentlich_ein_string
    daten As String

    Declare Constructor
    Declare Constructor (x As Integer)
    Declare Constructor (x As Double)
    Declare Constructor (x As String)
    Declare Constructor (x As eigentlich_ein_string)
    Declare Destructor

    Declare Function gibZahl (x As Integer) As Integer
    Declare Function gibZahl (x As Double) As Double

    Declare Property proGib As Double
    Declare Property proGib (x As Double)

    Declare Operator Cast As Integer
    Declare Operator Cast As Double
    Declare Operator Cast As String

    Declare Operator += (x As Integer)
    Declare Operator += (x As Double)
    Declare Operator Let (x As Integer)
    Declare Operator Let (x As Double)
    Declare Operator Let (x As String)
    Declare Operator Let (x As eigentlich_ein_string)
    Declare Operator For
    Declare Operator Step
    Declare Operator Next (x As eigentlich_ein_string) As Integer
    Declare Operator For (x As eigentlich_ein_string)
    Declare Operator Step (x As eigentlich_ein_string)
    Declare Operator Next (x As eigentlich_ein_string, y As eigentlich_ein_string) As Integer
    Declare Operator @ () As ZString Ptr
End Type

Ja, das ist schon mal sehr viel, ist aber halb so schlimm. Man sieht aber schon, was man alles mit BefehlsreferenzeintragUDTs machen kann und was alles überladen wird.
Da haben wir:

(Möglich wäre auch BefehlsreferenzeintragSub)

Ein Constructor wird immer aufgerufen, wenn eine Variable des eigenen Types deklariert wird. Damit kann man praktischerweise Startwerte setzen.
Ein Destructor ist genau das Gegenteil. Er wird als letztes aufgerufen, wenn eine Variable gelöscht wird, weil sie etwa nur in einem BefehlsreferenzeintragScope definiert war.
Function sollte soweit bekannt sein, deswegen wird nicht näher darauf eingegangen.
Property ist eine Geschichte für sich. Um dieses Tutorial nicht auch noch damit zu füllen, habe ich es ausgelagert: Property Tutorial
Operatoren sind mathematische Zeichen wie '+', '-' usw. 'Let' steht dabei für den Zuweisungsoperator '='. Es können aber auch andere Zeichen sein, wie etwa das Befehlsreferenzeintrag@-Symbol, als Zeichen für die BefehlsreferenzeintragAdresse einer Variable im Speicher. Hier gibt es Ausnahmen, auf die gleich eingehen werde.
Eine Sonderform dabei sind die Operatoren BefehlsreferenzeintragFor, Next und BefehlsreferenzeintragStep, es sind sogenannte Iteratoren. Dazu aber auch erst später mehr.

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  5  6  7  8  9  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 03.06.2010 von RedakteurMOD angelegt.
  • Die aktuellste Version wurde am 23.11.2013 von RedakteurMOD gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen