NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
unique_ptr< T, Deleter > 模板类 参考

独占智能指针 更多...

#include <unique_ptr.hpp>

Public 类型

using pointer = typename inner::__unique_ptr_impl<T, Deleter>::pointer
 指针类型
using element_type = T
 元素类型
using deleter_type = Deleter
 删除器类型

Public 成员函数

template<typename Del = Deleter, typename = DeleterConstraint<Del>>
constexpr unique_ptr (nullptr_t=nullptr) noexcept
 空指针构造
template<typename Del = Deleter, typename = DeleterConstraint<Del>>
constexpr unique_ptr (pointer ptr) noexcept
 从指针构造
template<typename Del = Deleter, enable_if_t< is_constructible_v< Deleter, Del >, int > = 0>
constexpr unique_ptr (pointer ptr, Del &&deleter) noexcept
 从指针和复制删除器复制构造
constexpr unique_ptr (unique_ptr &&) noexcept=default
 移动构造函数
template<typename U, typename E, enable_if_t< conjunction< safe_conversion< U, E >, conditional_t< is_reference< Deleter >::value, is_same< E, Deleter >, is_convertible< E, Deleter > > >::value, int > = 0>
constexpr unique_ptr (unique_ptr< U, E > &&other) noexcept
 从其他unique_ptr转换构造
 ~unique_ptr () noexcept
 析构函数
unique_ptroperator= (unique_ptr &&) noexcept=default
 移动赋值运算符
template<typename U, typename E, enable_if_t< conjunction< safe_conversion< U, E >, is_assignable< deleter_type &, E && > >::value, int > = 0>
constexpr unique_ptroperator= (unique_ptr< U, E > &&other) noexcept
 从其他unique_ptr移动赋值
constexpr unique_ptroperator= (nullptr_t) noexcept
 nullptr赋值运算符
constexpr add_lvalue_reference_t< element_typeoperator* () const noexcept(noexcept(*_NEFORCE declval< pointer >()))
 解引用运算符
constexpr pointer operator-> () const noexcept
 成员访问运算符
constexpr pointer get () const noexcept
 获取原始指针
constexpr deleter_typeget_deleter () &noexcept
 获取删除器引用
constexpr const deleter_typeget_deleter () const &noexcept
 获取删除器常量引用
constexpr deleter_type && get_deleter () &&noexcept
 获取删除器引用
constexpr const deleter_type && get_deleter () const &&noexcept
 获取删除器常量引用
constexpr operator bool () const noexcept
 bool转换运算符
constexpr pointer release () noexcept
 释放所有权
constexpr void reset (pointer ptr=pointer()) noexcept
 重置管理的指针
constexpr void swap (unique_ptr &other) noexcept
 交换两个unique_ptr
 unique_ptr (const unique_ptr &)=delete
 禁止复制构造
unique_ptroperator= (const unique_ptr &)=delete
 禁止复制赋值

详细描述

template<typename T, typename Deleter = default_deleter<T>>
class unique_ptr< T, Deleter >

独占智能指针

模板参数
T元素类型
Deleter删除器类型,默认为default_delete<T>

管理动态分配对象的独占所有权,确保对象在离开作用域时被正确删除。

在文件 unique_ptr.hpp206 行定义.

构造及析构函数说明

◆ unique_ptr() [1/4]

template<typename T, typename Deleter = default_deleter<T>>
template<typename Del = Deleter, typename = DeleterConstraint<Del>>
unique_ptr< T, Deleter >::unique_ptr ( nullptr_t = nullptr)
inlineconstexprnoexcept

空指针构造

模板参数
Del删除器类型

在文件 unique_ptr.hpp229 行定义.

◆ unique_ptr() [2/4]

template<typename T, typename Deleter = default_deleter<T>>
template<typename Del = Deleter, typename = DeleterConstraint<Del>>
unique_ptr< T, Deleter >::unique_ptr ( pointer ptr)
inlineconstexprnoexcept

从指针构造

模板参数
Del删除器类型
参数
ptr要管理的指针

在文件 unique_ptr.hpp237 行定义.

◆ unique_ptr() [3/4]

template<typename T, typename Deleter = default_deleter<T>>
template<typename Del = Deleter, enable_if_t< is_constructible_v< Deleter, Del >, int > = 0>
unique_ptr< T, Deleter >::unique_ptr ( pointer ptr,
Del && deleter )
inlineconstexprnoexcept

从指针和复制删除器复制构造

参数
ptr要管理的指针
deleter删除器对象

在文件 unique_ptr.hpp246 行定义.

◆ unique_ptr() [4/4]

template<typename T, typename Deleter = default_deleter<T>>
template<typename U, typename E, enable_if_t< conjunction< safe_conversion< U, E >, conditional_t< is_reference< Deleter >::value, is_same< E, Deleter >, is_convertible< E, Deleter > > >::value, int > = 0>
unique_ptr< T, Deleter >::unique_ptr ( unique_ptr< U, E > && other)
inlineconstexprnoexcept

从其他unique_ptr转换构造

模板参数
U源元素类型
E源删除器类型
参数
other源unique_ptr

在文件 unique_ptr.hpp262 行定义.

成员函数说明

◆ operator bool()

template<typename T, typename Deleter = default_deleter<T>>
unique_ptr< T, Deleter >::operator bool ( ) const
inlineexplicitconstexprnoexcept

bool转换运算符

返回
是否管理非空对象

在文件 unique_ptr.hpp346 行定义.

◆ operator*()

template<typename T, typename Deleter = default_deleter<T>>
add_lvalue_reference_t< element_type > unique_ptr< T, Deleter >::operator* ( ) const
inlineconstexprnoexcept

解引用运算符

返回
管理对象的引用

在文件 unique_ptr.hpp306 行定义.

◆ operator->()

template<typename T, typename Deleter = default_deleter<T>>
pointer unique_ptr< T, Deleter >::operator-> ( ) const
inlineconstexprnoexcept

成员访问运算符

返回
管理对象的指针

在文件 unique_ptr.hpp315 行定义.

◆ operator=() [1/2]

template<typename T, typename Deleter = default_deleter<T>>
unique_ptr & unique_ptr< T, Deleter >::operator= ( nullptr_t )
inlineconstexprnoexcept

nullptr赋值运算符

返回
当前对象引用

在文件 unique_ptr.hpp297 行定义.

◆ operator=() [2/2]

template<typename T, typename Deleter = default_deleter<T>>
template<typename U, typename E, enable_if_t< conjunction< safe_conversion< U, E >, is_assignable< deleter_type &, E && > >::value, int > = 0>
unique_ptr & unique_ptr< T, Deleter >::operator= ( unique_ptr< U, E > && other)
inlineconstexprnoexcept

从其他unique_ptr移动赋值

模板参数
U源元素类型
E源删除器类型
参数
other源unique_ptr
返回
当前对象引用

在文件 unique_ptr.hpp287 行定义.

◆ swap()

template<typename T, typename Deleter = default_deleter<T>>
void unique_ptr< T, Deleter >::swap ( unique_ptr< T, Deleter > & other)
inlineconstexprnoexcept

交换两个unique_ptr

参数
other要交换的对象

在文件 unique_ptr.hpp366 行定义.


该类的文档由以下文件生成: