Namensräume
Varianten
Aktionen

std::weak_ptr

Aus cppreference.com
< cpp‎ | memory
 
 
 
Dynamische Speicherverwaltung
Low-Level-Speicherverwaltung
Zuweiser
Original:
Allocators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
allocator
allocator_traits(C++11)
allocator_arg_t(C++11)
allocator_arg(C++11)
uses_allocator(C++11)
scoped_allocator_adaptor(C++11)
Initialisierter Speicher
Original:
Uninitialized storage
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
uninitialized_copy
uninitialized_copy_n(C++11)
uninitialized_fill
uninitialized_fill_n
raw_storage_iterator
get_temporary_buffer
return_temporary_buffer
Intelligente Zeiger
Original:
Smart pointers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unique_ptr(C++11)
shared_ptr(C++11)
weak_ptr(C++11)
auto_ptr(veraltet)
owner_less(C++11)
enable_shared_from_this(C++11)
bad_weak_ptr(C++11)
default_delete(C++11)
Garbage Collection Unterstützung
Original:
Garbage collection support
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
declare_reachable(C++11)
undeclare_reachable(C++11)
declare_no_pointers(C++11)
undeclare_no_pointers(C++11)
pointer_safety(C++11)
get_pointer_safety(C++11)
Verschiedenes
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
pointer_traits(C++11)
addressof(C++11)
align(C++11)
C-Bibliothek
Original:
C Library
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
 
std::weak_ptr
Member-Funktionen
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
weak_ptr::weak_ptr
weak_ptr::~weak_ptr
weak_ptr::operator=
Modifiers
Original:
Modifiers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
weak_ptr::reset
weak_ptr::swap
Beobachter
Original:
Observers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
weak_ptr::use_count
weak_ptr::expired
weak_ptr::lock
weak_ptr::owner_before
Non-Member-Funktionen
Original:
Non-member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
std::swap
 
definiert in Header <memory>
template< class T > class weak_ptr;
(seit C++11)

std::weak_ptr ist ein intelligenter Zeiger, der einen nichtbesitzenden ("schwachen") Verweis auf ein Objekt hält, welches durch einen std::shared_ptr verwaltet wird. Er muss in einen std::shared_ptr umgewandelt werden, um auf das referenzierte Objekt zugreifen zu können.

std::weak_ptr bildet eine temporäre Eigentümerschaft ab. Diese Eigentümerschaft erstreckt sich nur die Zeit des Zugriffs, falls das Objekt dann noch existiert. Außerhalb dieser Zeit, kann das Objekt jederzeit von jemand anderes zerstört werden. std::weak_ptr wird verwendet, um die Zugriffsmöglichkeit auf das Objekt zu speichern. Er muß in einen std::shared_ptr umgewandelt werden, um das Objekt vorübergehend in Besitz zunehmen. Falls während dieser Zeit, der ursprüngliche std::shared_ptr zerstört wird, so wird die Lebensdauer des verwalteten Objekten bis zur Zerstörung des temporären std::shared_ptrs verlängert.

Zusätzlich kann std::weak_ptr dazu verwendet werden, Kreisabhängigkeiten zwischen std::shared_ptrs aufzubrechen.

Inhaltsverzeichnis

[Bearbeiten] Klassentypen

Typ Definition
element_type T

[Bearbeiten] Methoden

erzeugt einen neuen weak_ptr
(öffentliche Elementfunktion) [edit]
zerstört einen weak_ptr
(öffentliche Elementfunktion) [edit]
weist einen weak_ptr zu
(öffentliche Elementfunktion) [edit]
modifizierend
löst die Eigentumsverbindung zwischen weak_ptr und dem zuverwaltenden Objekts
(öffentliche Elementfunktion) [edit]
vertauscht die verwalteten Objekte
(öffentliche Elementfunktion) [edit]
informierend
gibt die Anzahl der shared_ptrs, die das selbe Objekte verwalten
(öffentliche Elementfunktion) [edit]
prüft, ob das referenzierte Objekt bereits gelöscht wurde
(öffentliche Elementfunktion) [edit]
erzeugt einen shared_ptr, der das referenzierte Objekt verwaltet
(öffentliche Elementfunktion) [edit]
erlaubt Sortierung der weak_ptr basierend auf dem Besitz
(öffentliche Elementfunktion) [edit]

[Bearbeiten] Assoziierte Funktionen

Spezialisierung des std::swap-Algorithmus für schwache Zeiger
(Funktions-Template) [edit]

[Bearbeiten] Beispiele

Veranschaulicht, wie lock() verwendet werden muß, um die Gültigkeit des Zeigers zu gewährleisten.

#include <iostream>
#include <memory>
 
std::weak_ptr<int> gw;
 
void f()
{
    if (auto spt = gw.lock()) { // Has to be copied into a shared_ptr before usage
	std::cout << *spt << "\n";
    }
    else {
        std::cout << "gw is expired\n";
    }
}
 
int main()
{
    {
        auto sp = std::make_shared<int>(42);
	gw = sp;
 
	f();
    }
 
    f();
}

Output:

42
gw is expired