Klicken Sie Zeilen an, die mit + markiert sind. Dort ist Hilfeinformation hinterlegt.
Auf dem Heap wird Speicher für ein int reserviert und
mit 123 initialisiert. Die Adresse wird in einem
htwg::unique_ptr-Objekt auf dem Stack gespeichert.
Aufgerufene Funktionen aus htwg_unique_ptr.h: get() const operator*() const
Der intelligente Zeiger p kann nicht kopiert werden.
Mit std::move kann aber so getan werden,
als sei p ein temporäres Objekt.
Das erlaubt es dem Move-Konstruktor von htwg::unique_ptr
die Adresse aus p zu "stehlen" und damit q initialisieren.
In p steht anschließend die Adresse nullprt.
Aufgerufene Funktionen aus htwg_unique_ptr.h: get() const operator*() const
Das neue Objekt r auf dem Stack wird vom Default-Konstruktor
mit nullprt initialisiert.
Aufgerufene Funktion aus htwg_unique_ptr.h: operator!=(const unique_ptr<T>&,const unique_ptr<T>&)
Hier "stiehlt" die Move-Zuweisung von htwg::unique_ptr
die Adresse aus q und schreibt sie in r.
In q steht anschließend nullprt.
Vergleiche Zeile 17.
Aufgerufene Funktionen aus htwg_unique_ptr.h: get() const operator*() const
Aufgerufene Funktion aus htwg_unique_ptr.h: operator bool() const
Aufgerufene Funktion aus htwg_unique_ptr.h: get() const
Aufgerufene Funktion aus htwg_unique_ptr.h: operator==(const unique_ptr<T>&,const unique_ptr<T>&)
Aufgerufene Funktion aus htwg_unique_ptr.h: get() const
Aufgerufene Funktion aus htwg_unique_ptr.h: operator bool() const
Aufgerufene Funktionen aus htwg_unique_ptr.h: get() const operator*() const
Für r, q und p wird
(in dieser Reihenfolge) der Destruktor aufgerufen und im Fall von r
der in Zeile 13 allokierte Heap-Speicher freigegeben.