std::unique_ptr<T,Deleter>:: ~unique_ptr
      From cppreference.net
     
     
      
       <
       
        cpp
       
        |
       
        memory
       
        |
       
        unique ptr
       
      
     
     
        
         C++
        
        
         
          
           
          
          
         
        
       
       
        
         Memory management library
        
        
         
          
           
            
          
          
          
         
        
       
       | 
 | 
 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
        
         
          std::unique_ptr
         
        
        
         
          
           
            
          
          
          
         
        
       
       | Member functions | ||||
| 
                
                 
                  
                   unique_ptr::~unique_ptr
                  
                 
                
                | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
| 
                
                 
                  
                   (C++14)
                  
                 
                 
                  
                   (C++20)
                  
                 
                
                | ||||
| 
                
                 
                 
                 
                  
                   (until C++20)
                  
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                  
                   (C++20)
                  
                 
                
                | ||||
| 
                
                 
                  
                   (C++20)
                  
                 
                
                | ||||
| Helper classes | ||||
| 
           
            ~unique_ptr
            
             (
            
            
             )
            
            
             ;
            
           
           | (自 C++11 起) (自 C++23 起为 constexpr) | |
       若
       
        
         get()
        
       
       
        ==
       
       
        
         nullptr
        
       
       则无任何效果。否则,通过
       
        
         get_deleter()
        
       
       
        (
       
       
        
         get()
        
       
       
        )
       
       销毁所拥有对象。
      
       要求
       
        get_deleter()(get())
       
       不抛出异常。
      
注释
       虽然使用默认删除器的
       
        std::unique_ptr<T>
       
       可以用
       
        不完整类型
       
       
        T
       
       构造,但在调用析构函数的代码位置,类型
       
        T
       
       必须是完整的。
      
示例
以下程序演示了自定义删除器的用法。
         运行此代码
        
       #include <iostream> #include <memory> int main () { auto deleter = [](int* ptr) { std::cout << "[deleter called]\n"; delete ptr; }; std::unique_ptr<int, decltype(deleter)> uniq(new int, deleter); std::cout << (uniq ? "not empty\n" : "empty\n"); uniq.reset(); std::cout << (uniq ? "not empty\n" : "empty\n"); }
输出:
not empty [deleter called] empty