C++: Verschiebesemantik

Was ist Verschiebesemantik?

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Bill Weinman erläutert in diesem Video die wertvolle Ergänzung Verschiebesemantik, die mit dem Sprachstandard C++11 in die Programmiersprache aufgenommen wurde.
02:14

Transkript

Verschiebesemantik stellt eine wichtige und wertvolle Ergänzung zur Sprache C++ dar. Die Verschiebesemantik wurde mit dem Standard C++11 in die Sprache aufgenommen. Um das Erfordernis für Verschiebesemantik zu veranschaulichen, betrachten wir dieses einfache Beispiel, und zwar ohne Verschiebesemantik. Hier ist eine Funktion, die ein Objekt vom Typ "T" übernimmt und ein Objekt desselben Typs "T" zurückgibt. Bei dieser Funktion wird der Parameter als Wert übergeben. Also muss beim Aufruf dieser Funktion ein Objekt konstruiert werden, mit dem die Funktion arbeitet. Da die Funktion das Ergebnis ebenfalls als Wert zurückgibt, wird ein weiteres neues Objekt für den Rückgabewert konstruiert. Damit haben wir zwei neue konstruierte Objekte. Eines von ihnen ist ein temporäres Objekt, das nur für die Dauer der Funktion gebraucht wird. Wenn das neue Objekt aus dem Rückgabewert erzeugt wird, wird der Kopierkonstruktor aufgerufen, um den Inhalt des temporären Objekts in das neue Objekt "b" zu kopieren. Am Ende der Funktion verschwindet das in der Funktion verwendete temporäre Objekt aus dem Gültigkeitsbereich und wird zerstört. Sehen wir uns an, was ein Kopierkonstruktor tut. Zuerst muss er das Objekt initialisieren, dann die relevanten Daten aus dem alten Objekt in das neue Objekt kopieren. Abhängig von der Klasse, ist das vielleicht ein Container mit jeder Menge Daten, was einen erheblichen Zeit- und Speicherplatzbedarf bedeutet. Mit Verschiebesemantik ist es nun möglich, den größten Teil dieser Arbeit zu entschärfen, indem die Daten einfach verschoben werden, anstatt sie zu kopieren. Beim Verschieben von Daten werden die Daten einfach dem neuen Objekt neu zugeordnet. Es findet überhaupt kein Kopieren statt. Das lässt sich mit einer sogenannten R-Wert-Referenz erreichen. Einen herkömmlichen Referenztyp in C++ bezeichnet man jetzt als L-Wert-Referenz, um ihn vom neuen R-Wert-Typ zu unterscheiden. Eine R-Wert-Referenz funktioniert fast wie eine L-Wert-Referenz, allerdings mit einem wichtigen Unterschied. Eine R-Wert-Referenz kann verschoben werden, eine L-Wert-Referenz dagegen nicht. Mit Verschiebesemantik gibt es viele wichtige Angriffspunkte, um Gewinne sowohl in Bezug auf Effizienz als auch in Bezug auf Speichernutzung zu erzielen. Sehen wir uns nun an, wie dieses leistungsfähige, neue Sprachfeature funktioniert.

C++: Verschiebesemantik

Verstehen Sie die grundlegenden Konzepte und sehen Sie, wie Verschiebesemantik in der modernen C++Entwicklung funktioniert.

30 min (9 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:27.12.2016

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!