- Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::shared_ptr::~shared_ptr(3) | C++ Standard Libary | std::shared_ptr::~shared_ptr(3) | 
NAME¶
std::shared_ptr::~shared_ptr - std::shared_ptr::~shared_ptr
Synopsis¶
~shared_ptr();
  
   If *this owns an object and it is the last shared_ptr owning it, the object
    is
  
   destroyed through the owned deleter.
  
   After the destruction, the smart pointers that shared ownership with *this,
    if any,
  
   will report a use_count() that is one less than its previous value.
Notes¶
 Unlike std::unique_ptr, the deleter of std::shared_ptr is invoked
    even if the
  
   managed pointer is null.
Example¶
// Run this code
  
   #include <iostream>
  
   #include <memory>
  
   struct S
  
   {
  
   S() { std::cout << "S::S()\n"; }
  
   ~S() { std::cout << "S::~S()\n"; }
  
   struct Deleter
  
   {
  
   void operator()(S* s) const
  
   {
  
   std::cout << "S::Deleter()\n";
  
   delete s;
  
   }
  
   };
  
   };
  
   int main()
  
   {
  
   auto sp = std::shared_ptr<S>{new S, S::Deleter{}};
  
   auto use_count = [&sp](char c)
  
   {
  
   std::cout << c << ") use_count(): " <<
    sp.use_count() << '\n';
  
   };
  
   use_count('A');
  
   {
  
   auto sp2 = sp;
  
   use_count('B');
  
   {
  
   auto sp3 = sp;
  
   use_count('C');
  
   }
  
   use_count('D');
  
   }
  
   use_count('E');
  
   // sp.reset();
  
   // use_count('F'); // would print "F) use_count(): 0"
  
   }
Output:¶
 S::S()
  
   A) use_count(): 1
  
   B) use_count(): 2
  
   C) use_count(): 3
  
   D) use_count(): 2
  
   E) use_count(): 1
  
   S::Deleter()
  
   S::~S()
See also¶
 destructor destroys a weak_ptr
  
   (public member function of std::weak_ptr<T>)
| 2024.06.10 | http://cppreference.com |