std::weak_ptr
Da cppreference.com.
![]() | Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate. La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
Elemento definito nell'header <memory> | ||
template<class T >class weak_ptr; | (dal C++11) | |
std::weak_ptr
è un puntatore intelligente che contiene un non proprietario ("debole"), riferimento a un oggetto gestito da std::shared_ptr. Deve essere convertito in std::shared_ptr per accedere l'oggetto di riferimento.Original:
std::weak_ptr
is a smart pointer that holds a non-owning ("weak") reference to an object that is managed by std::shared_ptr. It must be converted to std::shared_ptr in order to access the referenced object.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
std::weak_ptr modelli temporanea di proprietà:. quando un oggetto ha bisogno di essere accessibile solo se esiste, e può essere cancellato in qualsiasi momento da un altro utente, std::weak_ptr viene utilizzato per monitorare l'oggetto, ed è convertito al std::shared_ptr di assumere proprietà temporanea. Se il std::shared_ptr originale viene distrutto in questo momento, la vita dell'oggetto è prorogato fino al std::shared_ptr temporaneo si distrugge anche la.
Original:
std::weak_ptr models temporary ownership: when an object needs to be accessed only if it exists, and it may be deleted at any time by someone else, std::weak_ptr is used to track the object, and it is converted to std::shared_ptr to assume temporary ownership. If the original std::shared_ptr is destroyed at this time, the object's lifetime is extended until the temporary std::shared_ptr is destroyed as well.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Inoltre, std::weak_ptr viene utilizzato per interrompere i riferimenti circolari di std::shared_ptr.
Original:
In addition, std::weak_ptr is used to break circular references of 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.
You can help to correct and verify the translation. Click here for instructions.
[modifica]Membri tipi
Membro tipo Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Definition |
element_type | T |
[modifica]Membri funzioni
crea un nuovo weak_ptr Original: creates a new weak_ptr The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
distrugge un weak_ptr Original: destroys a weak_ptr The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
assegna il weak_ptr Original: assigns the weak_ptr The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
Original: Modifiers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
rilascia la proprietà dell'oggetto gestito Original: releases the ownership of 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. (metodo pubblico) | |
swap gli oggetti gestiti Original: swaps the managed objects The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
Original: Observers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
restituisce il numero di oggetti shared_ptr che gestiscono l'oggetto Original: returns the number of shared_ptr objects that manage the object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
Verifica se l'oggetto di riferimento è già stato cancellato Original: checks whether the referenced object was already deleted The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
crea un shared_ptr che gestisce l'oggetto indicatoOriginal: creates a shared_ptr that manages the referenced objectThe text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
fornisce proprietario basato ordinamento di puntatori deboli Original: provides owner-based ordering of weak pointers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) |
[modifica]Non membri funzioni
(C++11) | specializzata l'algoritmo std::swap Original: specializes the std::swap algorithm The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (funzione di modello) |
[modifica]Esempio
Dimostra come blocco viene utilizzato per garantire la validità del puntatore .
Original:
Demonstrates how lock is used to ensure validity of the pointer.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#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 usagestd::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