Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++

Operatoren überladen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Der Trainer lässt zwei Sterne kollidieren! Lernen Sie, wie Sie Operatoren überladen können, um z.B. zwei Objekte zu summieren.

Transkript

Nun kommt was ganz raffiniertes und praktisches, nämlich das Überladen von Operatoren. Das bedeutet Sie können zum Beispiel Arithmetik Plus, Minus, Mal, Dif und so weiter selber definieren. Arithmetik die man dann mit den Klassen durchführen kann. Machen wir mal hier ein ganz einfaches Beispiel. Ich habe hier mal eine Klasse vorbereitet, die heißt stellarobject vielleicht für ein Raumschiffspielchen oder ähnliches. Die hat jetzt follgende Elemente: Zunächst einmal x y z, das soll die Position sein, dann hier 3 Geschwindigkeitsvariable für ein Vektor, eine Masse und vielleicht noch einen Identifier, eine Kennung. Hier habe ich nur dummymäßig mal einen Konstruktor definiert, sonst kann man nämlich nachher keine Objekte einzeln definieren und einen Konstruktor mit Parametern, das scrolle ich hier mal ein bisschen rüber, aber hier sieht man schon alles. der definiert einfach Masse x y z und so weiter und speichert das in die entsprechende Variable rein. So, dann haben wir noch eine Ausgabe, damit man auch sieht was da rauskommt, wenn ich nacher was als Wert besetze. Und das geben wir hier einfach nacheinander aus, nämlich einfach die Masse, die x z y Position und die entsprechenden Geschwindigkeitsvektoren und dann habe ich, beziehungsweise eigentlich nur1 Vektor, der aus drei Komponenten besteht. Und dann habe ich jetzt das eigentlich interessante Teil, nämlich den Operator+ hier definiert. Das gibt man immer so an, dann muss man hier operator schreiben und dahinter den Operator den man überschreiben möchte, nämlich das plus Symnol. Den kann man dann nachher einfach so verwenden, als ob ich zum Beispiel zwei Zahlen zusammenzählen möchte, kann ich dann Objekte was auch immer damit machen. Ob es dann einer Addition entspreicht muss man sich natürlich selber überlegen. Es sollte natürlich irgendwie damit zusammenhängen, sonst kommt man ziemlich durcheinander. Also der liefert als Ergebnis wieder ein stellarobject_cls natürlich zurück, weil ich muss ja zwei addieren und ein drittes dann abliefern. Das zweite, der Parameter a sozusagen ist das Objekt selber und hier in Klammern werden die Parameter c2 übergeben, nämlich das zweite Objekt, was ich dazu addieren möchte sozusagen. Nun und dann kann ich anfangen damit. Ich muss irgendwie folgendes machen, mir meine Temporärvariable definieren, und zwar soll die initialisiert werden mit *this, nämlich mit dem eigenen Objekt hier, also mit den Daten die ich hier habe, weil das brauche ich jetzt um da mal die Addition austuführen, dann sollte es nacher das Ergebnis liefern. Naja und hier mache ich mir ein paar Hilfsvariable, die Masse addiert sich einfach aus den einzelnen Massen, also tmp.mass + c2.mass tmp ist ja das eigene Objekt und dann kann ich hier x, y, z, das soll der Mittelwert sein in der Position, der Geschwindigkeitsvektor x, y, z der berechnet sich hier nach dem impulserhaltungssatz zu m*v, also kann ich hier Masse Mal Geschwindigkeit rechnen und durch die neue Gesamtmasse dividieren und dann kriege ich tmp als Ergebnis, das muss ich hier mit return zurückliefern, denn das ist das Ergebnis der Addition. Das ist eigentlich schon das ganze Geheimnis. Scrolle ich hier mal zurück, dass wir wieder alles sehen. Das Hauptprogramm sieht jetzt so aus: Ich habe jetzt hier mal zwei Variable c1 und c2 definiert, die hier initialisiert werden mit dem Id 1 und 2 und der Masse 1000 und 1500, Position und Geschwindigkeit, gebe dann diese beiden einzelnen aus und jetzt möchte ich es natürlich addieren. Das kann ich jetzt zum Beispiel hier so machen, dass ich mir hier ein Hilfsobjekt definiere, also c3, c3 = c1 + c2 das ist jetzt das Elegante, das ist jetzt unsere selbsgebaute Addition die genau nach den Regeln eben für unser Objekt geltend arbeitet und mit c 3 ausgabe gebe ich dann das Ergebnis aus. Und jetzt schauen wir uns mal an wie das Ganze aussieht. Da haben wir das schon. Da habe ich ID 1 und 2, der 3. ID war jetzt gar nicht definiert, da hätte man sich noch was überlegen müssen, Dan habe ich hier, also das ist jetzt der ID gewesen vom ersten Wert automatisch dadurch, dass wir tmp mit this kopiert haben. Und hier habe ich jetzt eben hier die Summe an der Masse, das ist dann 2500, Hier hatten wir die Mittelwerte berechnet, im Prinzip multipliziert mit der Masse, da können Sie mal nachprobieren, ob diese Werte hier auch tatsächlich so stimmen, wie sie hier angezeigt werden. Also jedenfalls kann man auf die Art und Weise erstmal ganz leicht sich Operatoren definieren, neben Plus geht auch Minus, Mal, Dividiert und einige andere auch. Wir werden jetzt gleich noch ein paar Beispiele ansehen, weil das ist eine Variante wie man sowas im Prinzip definieren kann.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!