Operatorüberladung + - * / % ^ & | ~ ! , = < > <= >= ++ --

Slides:



Advertisements
Ähnliche Präsentationen
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.
Advertisements

FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Programmieren mit JAVA
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
DVG Klassen und Objekte
Dynamische Datentypen
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
Übersicht Nachtrag zu Ausdrücken
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Stichwortverzeichnis
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Schulung für Microsoft® Office SharePoint® 2007
Wer wir sind! Ihr S-Campus-Team direkt im Campus Center. Sven Deussing
Amand Fäßler 3. Januar 2017; RC Bregenz
Mathematik 11 Analytische Geomerie.
am 09. September 2013 in Rostock
Christian Eriksen.
Vorlesung Wasserwirtschaft & Hydrologie I
Vorlesung Eigenspannungen in Bauteilen und Werkstoffen
Definition/Allgemeines:
ɣ brain to write Erklärung des Rauschens Experimente
Dynamischer Speicher malloc wird in c++ eher nicht mehr verwendet.
Experimentelle Untersuchung von Hochvolt FGL-Ansteuerung
Fraktale Maple D =
Christoph Lass, KN-NAS Theorie
Evaluation & Forschungsstrategien
1. Einleitung, Problemstellung und Zielsetzung
Fraktale D =
Hochschule Fulda – FB AI Sommersemester 2017
Lineare Gleichungssysteme mit 3 Unbekannten
OOP II.
Ausblick Zu der nicht-euklidischen Geometrie gehören auch
Potenzen & Logarithmus
Fraktale D =
DIE VERBUND TURBINOS SIND EIN HIT.
Interne Qualitätssicherung
WIR ZEIGEN UNSEREN PROTEST Vorsitzender von ver.di
Potenzen & Logarithmus
Datenbanken Relationale Entwurfstheorie
Friends C++ ermöglicht, einzelne Funktionen oder ganze Klassen zu friends zu erklären. Friendfunktionen haben Zugang zu den privaten Daten einer Klasse.
Rheumatoide Arthritis und Baricitinib
Einführung in Web- und Data-Science
© Prof. Dr. Remo Ianniello
Lektion 17: Wie werden sportliche Leistungen gemessen?
WIEDERHOLUNG JAHRESSTOFF 3. Klasse
Datenbanken Relationale Entwurfstheorie
Von Cem, Maurice und lars
von binomischen Formeln
Vorlesung Eigenspannungen in Bauteilen und Werkstoffen
Wahrscheinlichkeitsrechnung -
Michael Barth, Fabian Birzele und Gefei Zhang
Ökonometrie und Statistik Mehrfachregression
Kinetik Elementarreaktionen:
Kettenregel Parliamo.altervista.org.
Abikurs 2018 Mathematik Differenzialrechnung * Integralrechnung * Geometrie Stochastik * Zusatzthemen * Prüfungsaufgaben Trainer: Klaus Messner
Eigenschaften von vektoren
Very Interesting Topic M. Mustermann, M. Musterfrau
Masse-Leuchtkraft-Beziehung
Grundkurs Informatik 11-13
Wahlteil 2009 – Analysis I 3 Die Aufgabe ist nur ausschnittsweise wiedergegeben Aufgabe I 3 Die normale Körpertemperatur eines gesunden Menschen liegt.
Ökonometrie und Statistik Datamining und Big Data anhand von Fallbeispielen Dr. Bertram Wassermann.
Rechnen mit vektoren 1
 Präsentation transkript:

Operatorüberladung + - * / % ^ & | ~ ! , = < > <= >= ++ -- « » == != && || += -= /= %= ^= &= |= *= «= »= [] () -> ->* new delete

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

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 (+, - ...)

Operatorüberladung Varianten Als Memberfunktion Der erste Operand muss vom Typ der eigenen Klasse sein erg_type operator@ () erg_type operator@ (arg_type operand2) Als Friend erg_type operator@ (arg_type op) erg_type operator@ (class_type op 1, arg_type op2) erg_type operator@ (arg_type op 1, class_type op2) Kommutativität ergibt sich nicht automatisch, es müssen dann zwei Operatorfunktionen realisiert werden.

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“));

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)

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