weak_ptr-Klasse
Umschließt einen schwach verknüpften Zeiger.
template<class Ty> class weak_ptr {
public:
typedef Ty element_type;
weak_ptr();
weak_ptr(const weak_ptr&);
template<class Other>
weak_ptr(const weak_ptr<Other>&);
template<class Other>
weak_ptr(const shared_ptr<Other>&);
weak_ptr& operator=(const weak_ptr&);
template<class Other>
weak_ptr& operator=(const weak_ptr<Other>&);
template<class Other>
weak_ptr& operator=(shared_ptr<Other>&);
void swap(weak_ptr&);
void reset();
long use_count() const;
bool expired() const;
shared_ptr<Ty> lock() const;
};
Parameter
- Ty
Der Typ gesteuert vom schwachen Zeiger.
Hinweise
Die Vorlagenklasse beschreibt ein Objekt, das auf einer Ressource zeigt, die von einem oder mehreren shared_ptr-Klasse-Objekte verwaltet wird. weak_ptr wendet diesen Punkt einer Ressource nicht beeinflussen den Verweiszähler der Ressource ein. Wenn das letzte shared_ptr-Objekt, das die Ressource verwaltet, zerstört wird, wird die Ressource freigegeben, auch wenn weak_ptr-Objekte sind, die auf diese Ressource verweisen. Dies ist zum Vermeiden von Zyklen in den Datenstrukturen Voraussetzung.
weak_ptr-Objektpunkte auf eine Ressource, wenn sie von einem shared_ptr-Objekt erstellt wurde, das diese Ressource besitzt, wenn sie von einem weak_ptr-Objekt erstellt wurde, das auf diese Ressource zeigt, oder wenn diese Ressource an sie mit weak_ptr::operator= zugewiesen wurde. Ein weak_ptr-Objekt stellt nicht direkt auf die Ressource, auf die sie zeigt. Code, dass die Ressource verwenden muss dies jetzt durch ein shared_ptr-Objekt, das die Ressource besitzt, erstellt durch Aufrufen der Memberfunktion weak_ptr::lock. Ein weak_ptr-Objekt ist abgelaufen, wenn die Ressource, der es zeigt auf, da alle shared_ptr-Objekte, dass die Ressource besitzen Sie sind, zerstört wurden freigegeben wurde. lock auf einem weak_ptr-Objekt aufrufen, das abgelaufen ist, erstellt ein leeres shared_ptr Objekt.
Ein leeres weak_ptr Objekt wird nicht auf den Ressourcen und hat keine Anweisung. Die Memberfunktion lock gibt einen leeren shared_ptr Objekt zurück.
Ein Zyklus tritt auf, wenn zwei oder mehr Ressourcen, die durch shared_ptr gesteuert werden Objekte, shared_ptr-Objekte sich gegenseitig verweisen Sie anhalten. Beispielsweise verfügt eine zirkuläre verknüpfte Liste mit drei Elemente einen Kopfknoten N0; dieser Knoten enthält ein shared_ptr-Objekt, das den folgenden Knoten besitzt, N1; dieser Knoten enthält ein shared_ptr-Objekt, das den folgenden Knoten besitzt, N2; dieser Knoten enthält wiederum ein shared_ptr-Objekt, das den Hauptknoten besitzt, N0 und schließt den Zyklus. In dieser Situation wird keine der Verweiszähler überhaupt keinen, und die Knoten des Zyklus werden nicht freigegeben. Um den Zyklus zu vermeiden, sollte dem letzten Knoten N2 ein weak_ptr-Objekt enthalten, das auf N0shared_ptr anstelle eines Objekts zeigt. Da das weak_ptr-Objekt N0 nicht besitzt, wirkt sich dies nicht N0 ), und wenn der letzte Verweis des Programms an dem Hauptknoten zerstört wird, werden die Knoten in der Liste auch zerstört.
Member
Konstruktoren
Erstellt ein Objekt vom Typ weak_ptr. |
Methoden
Der Typ des Elements. |
|
Testet, ob Besitz abgelaufen ist. |
|
Erhält exklusiven Besitz einer Ressource. |
|
Gibt true zurück, wenn dieser weak_ptr vor (oder kleiner als) dem bereitgestellten Zeiger sortiert wird. |
|
Besitze Ressourcen der Versionen. |
|
Tauscht zwei weak_ptr-Objekte. |
|
Anzahlzahl festgelegte shared_ptr-Objekte. |
Operatoren
Replaces besaß Ressourcen. |
Anforderungen
Header: <memory>
Namespace: std