Welche C-Smart-Pointer-Implementierungen sind verfügbar?
C 03
-
std::auto_ptr: Begrenzt Garbage Collection, kann keine vom Array zugewiesenen Objekte speichern.
-
std::auto_ptr_ref: Kein intelligenter Zeiger, wird mit std::auto_ptr zum Kopieren und Zuweisen verwendet.
C 11
-
std::unique_ptr: Ersetzt std::auto_ptr, verbesserte Leistung, funktioniert mit Arrays, kann in STL-Containern verwendet werden.
-
std::shared_ptr: Referenzgezählter intelligenter Zeiger, kann sein Von mehreren Besitzern geteilt, Thread-sicher.
-
std::weak_ptr: Verweis auf ein Objekt im Besitz von std::shared_ptr, verhindert nicht Löschung.
Boost
-
boost::shared_ptr: Standardkonformer Shared-PTR, einfach zu verwenden , teilweise hoher Overhead Fälle.
-
boost::weak_ptr: Standardkonformer schwacher_ptr, ermöglicht nicht besitzende Referenzen auf boost::shared_ptr.
-
boost::scoped_ptr: Ähnlich wie std::unique_ptr, weniger Overhead als boost::shared_ptr, kann nicht sein Wird in STL-Containern verwendet.
-
boost::intrusive_ptr: Anpassbarer Smart Pointer zum Erstellen eigener Smart Pointer-kompatibler Klassen.
-
boost::shared_array: Shared_ptr für Arrays, unterstützt die dynamische Array-Zuweisung und Löschung.
-
boost::scoped_array: Scoped_ptr für Arrays, nicht kopierbar, kann nicht in STL verwendet werden Container.
Qt
-
QPointer: Schwacher intelligenter Zeiger für QObject und abgeleitete Klassen, bietet keinen starker Zeiger.
-
QSharedDataPointer: Stark Intelligenter Zeiger, erfordert manuelle Referenzzählung, kann QSharedData in Unterklassen umwandeln.
-
QExplicitlySharedDataPointer: Ähnlich wie QSharedDataPointer, bietet mehr Kontrolle über das Trennen.
-
QSharedPointer: Atomare Referenzzählung, Thread-sicher, anpassbare Löschvorgänge, hoch Overhead.
-
QWeakPointer: Schwacher Smart Pointer, wird mit QSharedPointer verwendet, um Zirkelverweise zu verhindern.
-
QScopedPointer: Smart Pointer für einen einzelnen Besitzer, weniger Overhead als QSharedPointer.
Das obige ist der detaillierte Inhalt vonWelche C-Smart-Pointer-Implementierungen gibt es und wie unterscheiden sie sich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!