Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++

Operatoren überladen extern

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Eine weitere Möglichkeit, Operatoren zu überladen, stellt Ihnen der Trainer in diesem Film vor. Erfahren Sie anhand des Beispiels, wie Sie hier mit der friend-Anweisung umgehen sollten.

Transkript

Wir haben den Operator vorher in der Klassendefinition überladen das kann man aber auch extern machen. Und dazu hier nochmal das Beispiel mit dem Stellarobject, aber diesmal mit einer externen Deklaration. Hier habe ich also wieder x y z, einen Geschwindigkeitsvektor, eine Masse und ein Identifier, dann haben wir hier einen Konstruktor zur Initialisierung der entsprechenden Objete nachher und eine Ausgabe wie gehabt. So, jetzt geht es also ran. Jetzt wollen wir es extern deklarieren, also außerhalb von der Klassendefinition. Und das kann ich zum Beispiel hier mit friend machen. Ich brauche den friend, damit ich hier intern auf private Variable zum Beispiel zugreifen kann, damit es überhaupt funktioniert. Deshalb muss ich das hier so angeben, das ist da immer etwas sicherer. So und die Operation für plus gleich, wir wollen also plus gleich überladen und plus. Plus hatten wir ja schon, operator + definiere ich hier so: friend stellarobject_cls. Das ist jetzt fast gleich zu vorhergehenen internen Deklaration. Ich bekomme aber hier jetzt zwei Parameter, nämlich das was links auf der Addition steht und was rechts bei der Addition steht. Und wenn man es innerhalb der Klasse definert, hat man nur ein Objekt weil das eigene Objekt sozusagen der linke Teil ist. Und dann +=. Die Operation kann man auch überladen, das machen wir jetzt auch mal. Das sieht es ein bisschen anders aus. Naja, eigentlich nicht wirklich, aber wir haben hier Referenzobjekte, die man übergeben muss. damit es funktioniert, gleich auf beiden Seiten. Dann habe ich c1 und c2 , weil ich muss ja das Ergebniss auch hier, um c1 zu verändern. Das Ganze ist ein void, der liefert also hier in dem Fall keinen weiteren Wert zurück. Es gibt da noch andere Varianten wie man das machen kann. Also hier habe ich erstmal die Deklaration von unseren beiden Operationen, die wir hier überladen wollen. Und dann kommt jetzt hier die Definition: void operator += mit den beiden Parametern als Referenzobjekt hier in dem Fall und hier unten gleich mal vorab gesehen das Plus,das ist sehr ähnlich zu dem, was wir schon hatten. Aber machen wir jetzt mal += Da initialisiere ich mir auch wieder eine tmp Variable hier mit c1, da brauche ich jetzt kein *this, das würde ja gar nicht funktionieren, sondern den c1 als Parameter. Und ich habe jetzt hier meine Berechnungsformel, die jetzt im Prinip ganz genau so ablaufen für tmp und am Schlussschreibe ich einfach c1=tme, weil c1 ist ja das was verändert wird und c2 verändere ich ja nicht. Und dann schreibe ich das praktisch damit wieder zurück und hätte das hier auch direkt drauf ausüben können, ist aber eben eleganter, wenn man hier ein extra Objekt hat zumal ich hier mit der Summe hier noch ein bisschen was rechnen möchte zum Beispiel. So bei Plus sieht es im Prinzip ähnlich aus. Ich deklariere mir hier jetzt ebenfalls ein tmp Objekt und zu Abwechslung machen wir das mal anders. Ich muss es auch hier anders machen, weil ich hier kein Pointer bekomme, sondern ein ganzes Objekt und ich habe kein Konstruktor zum Kopieren von ganzen Objekten definiert, sondern nur für die einzelnen Elemente, also muss ich hier die einzelnen Elemente als Parameter übergeben um das zu initialisieren und der Rest der Form ist im Prinizip die Gleiche. Ich liefere dann c1=tmp ab, das kann man jetzt machen, das müsste man aber nichte machen, Objekt wird aber nicht verändert, es ist nur eine temporäre Variable hier, wichtig ist, dass ich hier mit return den Wert entsprechend zurückliefere und hier unten habe wir unser Hauptprogramm zum Testen. Zwei Objekte, wie gehabt definiere ich wieder mit Masse 1000, Masse 1500, geben wir sie aus, dann addiere ich c1+c2 nach c1, sowas darf ich natürlich auch machen, an das gleiche Objekt zurück, das ist Klar, gebe das aus und dann machen wir mit += noch eine Addition vom c2 drauf und schauen uns das Ganze hier gleich mal an wie das aussieht. Da habe ich hier erstmal 2500, das ist die Addition von dem und dann addieren wir nochmal das zweiite drauf und dann kommt hier 4000 raus, die rästlichen Werte dürfen Sie gerne mal zu Hause nachkontrollieren.

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!