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_ptr 的 deleter 函数。
异常
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 有七个构造函数。 |
Typedef
模板参数 Del 的同义词。 |
|
模板参数 Type 的同义词。 |
|
如果已定义,为 Del::pointer 的同义词,否则为 Type * 的同义词。 |
成员函数
返回 stored_ptr。 |
|
返回对 stored_deleter 的引用。 |
|
将 pointer() 存储在 stored_ptr 中并返回其先前内容。 |
|
释放当前拥有的资源并接受新资源。 |
|
使用提供的 unique_ptr 交换资源和 deleter。 |
运算符
operator bool |
此运算符返回可转换为 bool 的类型的值。 当 get() != pointer() 时,转换为 bool 的结果为 true,否则为 false。 |
operator-> |
此成员函数返回 stored_ptr。 |
operator* |
此成员函数返回 *stored_ptr。 |
将 unique_ptr (或 pointer-type)的值赋给当前 unique_ptr。 |
要求
标头:<memory>
命名空间: std