C++ Grundkurs

Besonderheiten von Operatoren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Operatoren verfügen in C++ über einige Besonderheiten. Dieses Video erläutert hierbei zu beachtende Regeln.
05:08

Transkript

In dieser Lektion will ich Ihnen die Besonderheiten von Operatoren in C++ vorstellen. Zuerst in logischen Ausdrücken gibt es die sogenannte Short Circuit Evaluation. Das steht für Kurzschlussauswertung. Was heißt das? Wenn Sie einen logischen Ausdruck haben wie a und b und Sie wissen, das a ist false, brauchen Sie den Ausdruck gar nicht mehr weiter evaluieren, weil der Gesamtausdruck wird immer false ergeben. Das ist die sog. Kurzschlussauswertung. Als Nächstes arithmetische Ausdrücke, was gibt es da für Besonderheiten? Bei der Ausdrucksform result = a^(ob^)b, wobei ^(ob^) für einen Operator wie plus, minus, mal oder durch steht. Diesen kann man einfacher schreiben mit result +=b. Also a*b wird zu +=b. Da ist sehr praktisch, weil diese rechte Form benötigt weniger Speicher. Es wird keine temporäre Variable angelegt, um das Ergebnis von a ob b zu erhalten. Interessant ist auch das Präinkrement und das Postinkrement. Interessant aus dem Grund, weil die sich verschieden verhalten und von daher auch eine häufige Ursache von Fehlern sind. ++a, was macht es? ++a nimmt den Wert von a - eine natürliche Zahl -, inkrementiert es um 1 und gibt den inkrementierten Wert zurück. Postinkrement verhält sich genau spiegelbildlich. Es gibt erst den alten Wert von a zurück und inkrementiert dann den Wert um 1. Dritte Besonderheit: Sie können natürlich Operatoren für einen eigenen Datentyp überladen, so dass Ihre Datentypen z. B. Additionen unterstützen. Das, was ich gerade in der Theorie gesagt habe, werde ich natürlich wieder in der Praxis zeigen. Zuerst die Short Circuit Evaluation. Der Compiler wertet den Ausdruck true or 1/0 aus, obwohl hier eine Division durch 0 stattfindet. Das ist natürlich nicht zulässig. Das macht er aber aus dem einfachen Grund oder das ist kein Problem für ihn, weil der Ausdruck true or 1/0 schon true ergibt, egal was nach dem or kommt. Er ignoriert das also vollkommen. Da sehen Sie eine Programmschleife und es gibt entsprechende Ausgabe. Dann komme ich wieder auf die arithmetischen Ausdrücke. Wenn ich einen Variable a mit 2000 initialisiere und dann um 10 erhöhe, ist es das Gleiche, wie wenn ich a += 10 berechne. Das ist der Grund, wieso hier a 2010 ist und a hier 2020 ist, weil ich es hier um 10 erhöht habe und hier um 10 erhöht habe. Wie gesagt nochmals: dieser Ausdruck ist in der Regel performanter, schneller und braucht weniger Speicher. Dann komme ich noch einmal auf die Besonderheiten von Prä- und Postdekrement. Das Gleiche gilt natürlich auch fürs Prä- und Postinkrement. Ich initialisiere one mit 1, dann dekrementiere ich one um 1 und weise es p zu. Sie sehen, das Ergebnis ist: one hat dann den Wert 0. 1 – 1 = 0. Das sieht gut aus. Ich setze one noch einmal auf den Wert 1. Diesmal wende ich aber ein Postdekrement an. Das Besondere am Postdekrement ist, dass der alte Wert von one post zugewiesen wird und dann erst die 1 abgezogen wird. Das ist auch der Grund, wieso hier die one immer noch den Wert 1 hat. Nun zur letzten Besonderheit: zum Operator Overloading. Erst mal zeige ich die Anwendung. Ich habe hier einen Account, den ich mit 2000 initialisiere. Mein Kontostand ist also 2000. Dann addiere ich 3.45 hinzu und hier multipliziere ich die Zahl mit 1.01. Das entspräche einem Zinsaufschlag von 1%. Die Frage ist natürlich, wie kann ich += und *= auf myAccount anwenden. Die Lösung liegt in der Klasse Account. Als erstes hat Account, wie bekannt, einen Kontostand balance. Dieser wird über den Konstruktor initialisiert. Bis hierher sollte es eigentlich nichts Ungewohntes sein. Interessant wird es erst hier. Ich habe den += Operator, den *= Operator und den Ausgabeoperator überladen. Was macht der += Operator? Er nimmt das b und addiert es auf den Kontostand und gibt das aktuelle Objekt wieder zurück. *= macht das Gleiche, nur dass er diesmal statt der Addition die Multiplikation anwendet. Dann gibt es hier noch den Ausgabeoperator. Was macht der? Der nimmt zum einen den Kontostand und zum anderen schreibt er noch dahinter noch die Euro, die Währung. Wenn Sie das jetzt in der Anwendung ansehen, sehen Sie, myAccount 2000 wird als 2000 Euro ausgegeben. Die 2000 kommt daher. Ich gehe noch einmal hoch. Das ist acc.balance und das Leerzeichen sehen Sie hier und das Euro kommt von diesem Euro hier. Wenn ich jetzt die 3.45 Euro dazu addiere, wird aus 2000 2003.45 Euro. Wenn ich es um 0.01 erhöhe, wird aus 2003,45 2023.48 Euro. In dieser Lektion habe ich Ihnen die Besonderheiten von Operatoren in C++ gezeigt. Besonderheiten waren insbesondere die sog. Short Circuit Evaluation, das Prä- und Postinkrement bzw. Dekrement und dass Sie Operatoren für eigenen Datentypen überladen können.

C++ Grundkurs

Steigen Sie in die mächtige Programmiersprache C++ ein und lernen Sie dabei alle wichtigen Funktionen mit Anwendungsbeispielen kennen.

8 Std. 14 min (147 Videos)
Derzeit sind keine Feedbacks vorhanden...

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!