Namensräume
Varianten
Aktionen

std::shared_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::shared_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.
shared_ptr::shared_ptr
shared_ptr::~shared_ptr
shared_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.
shared_ptr::reset
shared_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.
shared_ptr::get
shared_ptr::operator*
shared_ptr::operator->
shared_ptr::use_count
shared_ptr::unique
shared_ptr::operator bool
shared_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
make_shared
allocate_shared
static_pointer_cast
dynamic_pointer_cast
const_pointer_cast
get_deleter
operator==
operator|=
operator<
operator<=
operator>
operator>=
operator<<
atomic_is_lock_free
atomic_load
atomic_load_explicit
atomic_store
atomic_store_explicit
atomic_exchange
atomic_exchange_explicit
atomic_compare_exchange_weak
atomic_compare_exchange_strong
atomic_compare_exchange_weak_explicit
atomic_compare_exchange_strong_explicit
std::hash
 
Defined in header <memory>
template< class T > class shared_ptr;
(seit C++11)

std::shared_ptr ist ein intelligenter Zeiger (smart pointer), der ein Objekt über einen Zeiger besitzt. Mehrere shared_ptr Instanzen können das selbe Objekt besitzen. Das Objekt wird zerstört, wenn eines der folgenden Ereignisse eintritt:

  • Der letzte shared_ptr, der das Objekt besitzt, wird zerstört.
  • Dem letzten shared_ptr, der das Objekt besitzt, wird ein neues Objekt mittles operator= oder reset() zugewiesen.

Das Objekt wird entweder mittels einer delete-expression oder einem benutzerdefiniertem deleter zerstört, der dem shared_ptr während der Erzeugung übergeben wird.

Ein shared_ptr kann den Besitz eines Objektes teilen, auch wenn ein anderes Objekt in ihm gespeichert ist. Das kann dazu benutzt werden, um Zeiger auf Member-Objekte zu speichern, während der shared_ptr das Objekt besitzt, zu dem das Member-Objekt gehört.

Ein shared_ptr kann auch kein Objekt besitzen, in diesem Fall wird er leer genannt.

Der shared_ptr erfüllt die Bedingungen für CopyConstructible und CopyAssignable.

Inhaltsverzeichnis

[Bearbeiten] Mitglied Typen

Member Typ Definition
element_type T

[Bearbeiten] Member-Funktionen

erzeugt einen neuen shared_ptr
(öffentliche Elementfunktion) [edit]
zerstört das Objekt, das dem shared_ptr gehört, wenn keine anderen shared_ptr mehr auf das Objekt verweisen.
(öffentliche Elementfunktion) [edit]
Zuweisung eines shared_ptr
(öffentliche Elementfunktion) [edit]
Modifizierend
ersetzt das verwaltete Objekt
Original:
replaces the managed object
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(öffentliche Elementfunktion) [edit]
tauscht die verwalteten Objekte aus
(öffentliche Elementfunktion) [edit]
Beobachter
liefert einen Zeiger auf das verwaltete Objekt
(öffentliche Elementfunktion) [edit]
dereferenziert den Zeiger auf das verwaltete Objekt
(öffentliche Elementfunktion) [edit]
gibt die Anzahl der shared_ptr-Objekte zurück, die auf dieselbe verwaltete Objekt verweisen
(öffentliche Elementfunktion) [edit]
prüft, ob das verwaltete Objekt nur durch die aktuelle shared_ptr Instanz verwaltet wird
(öffentliche Elementfunktion) [edit]
prüft, ob der shared_ptr mit einem verwalteten Objekt verknüpft ist
(öffentliche Elementfunktion) [edit]
erlaubt Sortierung der shared_ptr basierend auf dem Besitz
(öffentliche Elementfunktion) [edit]

[Bearbeiten] Non-Member-Funktionen

erzeugt einen shared_ptr, der ein neues Objekt verwaltet
(Funktions-Template) [edit]
erzeugt einen shared_ptr, der ein neues Objekt verwaltet, das mittels eines allocators erzeugt wird.
(Funktions-Template) [edit]
führt ein static_cast, ein dynamic_cast oder ein const_cast auf den Typ des verwalteten Objekts durch
(Funktions-Template) [edit]
gibt die deleter des angegebenen Typs, wenn Besitz
Original:
returns the deleter of specified type, if owned
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(Funktions-Template) [edit]
vergleicht mit einem anderen shared_ptr oder mit nullptr
(Funktions-Template) [edit]
schreibt den Wert des verwalteten Zeigers in einen output stream
(Funktions-Template) [edit]
Spezialisierung des std::swap Algorithmus
(Funktions-Template) [edit]
spezialisiert atomare Operationen
Original:
specializes atomic operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(Funktions-Template) [edit]

[Bearbeiten] Hilfsklassen

Hash-Unterstützung für std::shared_ptr
Original:
hash support for std::shared_ptr
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(class Template-Spezialisierung) [edit]

[Bearbeiten] Hinweise zur Umsetzung

In einer typischen Implementierung hält ein std::shared_ptr nur zwei Zeiger:

  • einen Zeiger auf das referenzierte Objekt
  • einen Zeiger auf einen Steuerblock

wobei der Steuerblock ein dynamisch erzeugtes Objekt ist. Der Steuerblock enthält:

  • einen Zeiger auf das verwaltete Objekt oder das verwaltete Objekt selbst
  • den deleter
  • den allocator
  • die Anzahl der shared_ptr, die das verwaltete Objekt besitzen
  • die Anzahl der weak_ptr, die auf das verwaltete Objekt verweisen

Wenn ein shared_ptr mittels std::make_shared oder std::allocate_shared erzeugt wird enthält der Steuerblock das verwaltete Objekt selbst als eine member-Variable. Wenn ein shared_ptr durch Aufruf eines Konstruktors erzeugt wird wird ein Zeiger im Steuerblock gespeichert.

Der Zeiger, der im shared_ptr direkt gespeichert ist wird von get() zurückgegeben, während der Zeiger / das Objekt, das im Steuerblock gespeichert ist, dasjenige ist, das gelöscht wird, wenn die Anzahl der gemeinsamen Besitzer Null erreicht. Die beiden Zeiger sind nicht notwendigerweise identisch.

Der Destruktor von shared_ptr verringert die Anzahl der gemeinsam Besitzer im Steuerblock. Wenn diese Anzahl Null erreicht, ruft der Steuerblock den Destruktor des verwalteten Objekts auf, löscht sich jedoch nicht selbst, bevor die Anzahl der std::weak_ptr ebenfalls Null erreicht.