Espaces de noms
Variantes
Actions

std::shared_ptr::~shared_ptr

De cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
 
La gestion dynamique de la mémoire
Faible niveau de gestion de la mémoire
Répartiteurs
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)
Non initialisée stockage
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
Pointeurs intelligents
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 (obsolète)
owner_less (C++11)
enable_shared_from_this (C++11)
bad_weak_ptr (C++11)
default_delete (C++11)
Soutien garbage collection
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)
Divers
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)
Bibliothèque C
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
Les fonctions membres
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=
Modificateurs
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
Des observateurs
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
Tiers fonctions
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
 
~shared_ptr();

Si *this possède un objet et est le dernier shared_ptr à le posséder, l'objet est détruit à l'aide du deleter de ce shared_ptr.

Une fois le pointeur intelligent détruit, les autres shared_ptr qui possédaient le même objet que *this retournerons une valeur pour use_count() qui sera inférieur de un à la valeur précédente.

[modifier]Notes

Contrairement à std::unique_ptr, le deleter d'un std::shared_ptr est invoqué même si le pointeur géré est nul.

[modifier]Exemple

#include <iostream>#include <memory>   class Foo {public: ~Foo(){std::cout<<"~Foo called."<<std::endl;}};   int main(){std::shared_ptr<Foo> ptr1(std::make_shared<Foo>());{std::shared_ptr<Foo> ptr2(ptr1);{std::shared_ptr<Foo> ptr3(ptr1);   std::cout<<"use_count: "<< ptr1.use_count()<<std::endl;std::cout<<"Deleting ptr3..."<<std::endl;}   std::cout<<"use_count: "<< ptr1.use_count()<<std::endl;std::cout<<"Deleting ptr2..."<<std::endl;}   std::cout<<"use_count: "<< ptr1.use_count()<<std::endl;std::cout<<"Deleting ptr3..."<<std::endl;}

Résultat :

use_count: 3 Deleting ptr3... use_count: 2 Deleting ptr2... use_count: 1 Deleting ptr3... ~Foo called.

[modifier]Voir aussi

close