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.