Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Ludo Hafner Geändert vor über 5 Jahren
1
Operatorüberladung + - * / % ^ & | ~ ! , = < > <= >= ++ --
== != && || += -= /= %= ^= &= |= *= «= »= [] () -> ->* new delete
2
Operatorüberladung Keine Überladung für . .* :: ?: sizeof -operator
Neue Operatoren können nicht definiert werden Eigenschaften bleiben erhalten Unär/binär Assoziativität Priorität Ein Operand muss von einem Klassendatentyp sein
3
Operatorüberladung Überladung durch
Memberfunktion (linker Operand vom Klassentyp) Nicht Memberfunktion (friend) Operatoren () und [] können nur durch Memberfunktionen überladen werden. (Beispiel Array- Klasse) Rückgabe einer Referenz, wenn das Ergebnisobjekt bereits existiert (+=, =, *= ...) Rückgabe des Objektes, wenn ein neues Objekt erzeugt wird (+, )
4
Operatorüberladung Varianten
Als Memberfunktion Der erste Operand muss vom Typ der eigenen Klasse sein erg_type () erg_type (arg_type operand2) Als Friend erg_type (arg_type op) erg_type (class_type op 1, arg_type op2) erg_type (arg_type op 1, class_type op2) Kommutativität ergibt sich nicht automatisch, es müssen dann zwei Operatorfunktionen realisiert werden.
5
Operatorüberladung Aufruf
Aufruf durch Verwendung im Ausdruck mystring s1=“Hans “; s1=s1+“Huckebein“; Aufruf als Funktion s1=s1.operator+(“Huckebein“); oder s1.operator=(s1.operator+(“Huckebein“));
6
Operatorüberladung Konvertierung
Ein Konstruktor mit nur einem Argument (beim Aufruf) heißt Konvertierungskonstruktor Konvertierung Fremdtyp → eigenen Klassentyp fraction(long num, long den=1); Um den impliziten Aufruf zu verhindern, kann explizit davor angegeben werden. (wird verwendet um Mehrdeutigkeiten aufzulösen, bedingt aber mehr Schreibaufwand)
7
Operatorüberladung Konvertierung
Zur Konvertierung des eigenen Klassentyps in einen Fremdtyp kann man einen Konvertierungsoperator schreiben: operator double() {return (double)Num/Denom;} Angabe von explizit zur Verhinderung von Mehrdeutigkeiten möglich
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.