unique_ptr 类

存储指向拥有的对象的指针。 此对象仅由 unique_ptr 拥有。 unique_ptr 被销毁后,此对象也将被销毁。

template< class Type, class Del = default_delete<Type> >
    class unique_ptr {
public:
    unique_ptr( );
    unique_ptr( nullptr_t Nptr );
    explicit unique_ptr( pointer Ptr );
    unique_ptr( pointer Ptr,
        typename conditional<is_reference<Del>::value, 
            Del,
            typename add_reference<const Del>::type>::type Deleter);
    unique_ptr (pointer Ptr,
        typename remove_reference<Del>::type&& Deleter);
    unique_ptr (unique_ptr&& Right);
    template<class Type2, Class Del2> unique_ptr( unique_ptr<Type2, Del2>&& Right );
    unique_ptr( const unique_ptr& Right) = delete;
    unique_ptr& operator=(const unique_ptr& Right ) = delete;
};

参数

  • Right
    unique_ptr

  • Nptr
    类型为 std::nullptr_t 的 rvalue

  • Ptr
    pointer

  • Deleter
    绑定到 unique_ptrdeleter 函数。

异常

unique_ptr 不生成异常。

备注

unique_ptr 类取代 auto_ptr,并可用作 STL 容器的元素。

使用 make_unique Helper 函数可高效创建 unique_ptr 的新实例。

unique_ptr 唯一管理资源。 每个 unique_ptr 对象均存储一个指向其拥有的对象的指针,或存储一个 null 指针。 资源只能由一个 unique_ptr 对象拥有;当拥有特定资源的 unique_ptr 对象被销毁后,资源将释放。 unique_ptr 对象可以移动,但不能复制;有关详细信息,请参阅规则引用声明符:&&

资源通过调用 Del 类型的已存储 deleter 对象来释放,此对象知道如何为特定 unique_ptr 分配资源。 默认 deleter default_delete<Type> 假定 _Ptr 指向的资源通过 new 分配,并且此资源可通过调用 delete _Ptr 释放。(部分专用化 unique_ptr<Type[]> 管理通过 new[] 分配的数组对象,并具有经过专用化以调用 delete[] _Ptr 的默认 deleter default_delete<Type[]>。)

指向拥有的资源的存储指针 stored_ptr 具有类型 pointer。 如果已定义,此为 Del::pointer,如果未定义,则为 Type * 。 如果 deleter 无状态,则存储的 deleter 对象 stored_deleter 不占用任何空间。 请注意,Del 可以为引用类型。

成员

构造函数

unique_ptr::unique_ptr

unique_ptr 有七个构造函数。

Typedef

deleter_type

模板参数 Del 的同义词。

element_type

模板参数 Type 的同义词。

指针

如果已定义,为 Del::pointer 的同义词,否则为 Type * 的同义词。

成员函数

unique_ptr::get

返回 stored_ptr。

unique_ptr::get_deleter

返回对 stored_deleter 的引用。

unique_ptr::release

将 pointer() 存储在 stored_ptr 中并返回其先前内容。

unique_ptr::reset

释放当前拥有的资源并接受新资源。

unique_ptr::swap

使用提供的 unique_ptr 交换资源和 deleter

运算符

operator bool

此运算符返回可转换为 bool 的类型的值。 当 get() != pointer() 时,转换为 bool 的结果为 true,否则为 false。

operator->

此成员函数返回 stored_ptr

operator*

此成员函数返回 *stored_ptr

unique_ptr operator=

unique_ptr (或 pointer-type)的值赋给当前 unique_ptr

要求

标头:<memory>

命名空间: std

请参见

参考

<memory>

其他资源

unique_ptr 成员