unique_ptr Class

存储指向一个拥有的对象。对象由没有其他 unique_ptr拥有。对象,当销毁时,销毁 unique_ptr

template<class Type, class Del = default_delete<Type> >
    class unique_ptr {

public:
        typedef Type element_type;
        typedef Del deleter_type;
        typedef T1 pointer;

        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 ();

    unique_ptr& operator= (
        unique_ptr&& _Right
    );
    template<class Type2, Class Del2>
        unique_ptr& operator= (
            unique_ptr<Type2, Del2>&& _Right
        );
    void swap (
        unique_ptr& _Right
    );
    pointer release ();
    void reset (
       pointer _Ptr = pointer()
    );

    pointer get () const;
    Type& operator* () const;
    pointer operator-> () const;
    Del& get_deleter ();
    const Del& get_deleter () const;
    explicit operator bool () const;

    unique_ptr(
        const unique_ptr& _Right
) = delete;
    unique_ptr& operator=(
        const unique_ptr& _Right
) = delete;

private:
    pointer stored_ptr;    // exposition only
    Del stored_deleter;    // exposition only
    };

参数

  • _Right
    unique_ptr

  • _Nptr
    类型为 std::nullptr_t 的 rvalue。

  • _Ptr
    pointer

  • _Deleter
    绑定到 unique_ptrdeleter 功能。

异常

异常是不受 unique_ptr生成的。

备注

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

unique_ptr 单独管理资源。每 unique_ptr 对象存储指向它拥有或存储 null 指针的对象。资源可以由不超过一 unique_ptr 对象拥有;当拥有特定资源时销毁的 unique_ptr 对象,该资源被释放。unique_ptr 对象不能移动,但是,复制;有关更多信息,请参见 Rvalue引用声明:&&

该资源通过调用已知类型 Del 的一个单元的 deleter 对象释放资源如何为特定 unique_ptr分配。该默认值 deleterdefault_delete<Type> 假定,该资源指向由 _Ptr 分配与 new,因此,它可以通过调用 delete _释放Ptr。(部分专用化 **unique_ptr<Type[]>**管理数组对象随 new[],并将默认值 deleterdefault_delete<Type[]>,专用调用删除 [] _Ptr。)

对特定资源,stored_ptr 的存储指针具有类型 pointer。如果在定义它是 Del::pointer 和 Type *,如果没有。存储的 deleter 对象 stored_deleter 不在对象占用的空间 deleter 是否是无状态的。请注意 Del 可以是引用类型。

成员

Ee410601.collapse_all(zh-cn,VS.110).gif构造函数

unique_ptr::unique_ptr

具有 unique_ptr的七个构造函数。

Ee410601.collapse_all(zh-cn,VS.110).gifTypedef

deleter_type

模板参数的 Del同义词。

element_type

模板参数的 Type.同义词

指针

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

Ee410601.collapse_all(zh-cn,VS.110).gif成员函数

unique_ptr::get

返回 stored_ptr。

unique_ptr::get_deleter

返回对 stored_deleter。

unique_ptr::release

在 stored_ptr 存储 pointer() 并返回其以前内容。

unique_ptr::reset

释放当前特定资源并接受新资源。

unique_ptr::swap

替换资源和 deleter 和提供的 unique_ptr

Ee410601.collapse_all(zh-cn,VS.110).gif运算符

operator bool

运算符返回转换成 bool类型的值。转换的结果传递到 bool 的是 true,当 get() != pointer(),否则 false。

operator->

成员函数返回 stored_ptr.

operator*

成员函数 returns*stored_ptr.

unique_ptr operator=

进行 unique_ptr(或 pointer-type) 的值设置为当前 unique_ptr

要求

标头:<memory>

命名空间: std

请参见

参考

<memory>

其他资源

unique_ptr 成员