std::unique_ptr::reset
![]() | 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. |
void reset( pointer ptr = pointer()); | (dal C++11) | |
Replaces the managed object.
Given current_ptr
, the pointer that was managed by *this
, performs the following actions, in this order:
- Saves a copy of the current pointer old_ptr = current_ptr
- Overwrites the current pointer with the argument current_ptr = ptr
- If the old pointer was non-empty, deletes the previously managed object if(old_ptr != nullptr) get_deleter()(old_ptr).
Indice |
[modifica]Parametri
ptr | - | pointer to a new object to manage |
[modifica]Valore di ritorno
You can help to correct and verify the translation. Click here for instructions.
[modifica]Note
To replace the managed object while supplying a new deleter as well, move assignment operator may be used.
A test for self-reset, i.e. whether ptr
points to an object already managed by *this
, is not performed, except where provided as a compiler extension or as a debugging assert. Note that code such as p.reset(p.release()) does not involve self-reset, only code like p.reset(p.get()) does.
[modifica]Esempio
#include <iostream>#include <memory> struct Foo { Foo(){std::cout<<"Foo...\n";} ~Foo(){std::cout<<"~Foo...\n";}}; struct D {void operator()(Foo* p){std::cout<<"Calling delete for Foo object... \n"; delete p;}}; int main(){std::cout<<"Creating new Foo...\n";std::unique_ptr<Foo, D> up(new Foo(), D());// up owns the Foo pointer (deleter D) std::cout<<"Replace owned Foo with a new Foo...\n"; up.reset(new Foo());// calls deleter for the old one std::cout<<"Release and delete the owned Foo...\n"; up.reset(nullptr);}
Output:
Creating new Foo... Foo... Replace owned Foo with a new Foo... Foo... Calling delete for Foo object... ~Foo... Release and delete the owned Foo... Calling delete for Foo object... ~Foo...
[modifica]Vedi anche
restituisce un puntatore all'oggetto gestito e rilascia la proprietà Original: returns a pointer to the managed object and releases the ownership The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) |