-
总览
-
轻量级
-
默认
-
分析
template <typename _Tp, typename _Dp = default_delete<_Tp>> class unique_ptr
template<typename _Tp> struct default_delete { constexpr default_delete() noexcept = default; void operator()(_Tp* __ptr) const { delete __ptr; } };
template <typename _Tp, typename _Dp> class __uniq_ptr_impl { private: tuple<pointer, _Dp> _M_t; }; __uniq_ptr_impl<_Tp, _Dp> _M_t;
-
使用场景
-
总结
-
-
大小
-
说明
-
析构类
-
tuple
template<std::size_t _Idx, typename _Head> struct _Head_base<_Idx, _Head, false> { _Head _M_head_impl; }; template<std::size_t _Idx, typename _Head> struct _Head_base<_Idx, _Head, true> { }; template<std::size_t _Idx, typename _Head, typename... _Tail> struct _Tuple_impl<_Idx, _Head, _Tail...> : public _Tuple_impl<_Idx + 1, _Tail...>, private _Head_base<_Idx, _Head> { };
-
-
实现
-
说明
-
分析
// Disable copy from lvalue. unique_ptr(const unique_ptr&) = delete; unique_ptr& operator=(const unique_ptr&) = delete;
-
移动
void reset(pointer __p = pointer()) noexcept { using std::swap; swap(_M_t._M_ptr(), __p); if (__p != pointer()) get_deleter()(__p); } pointer release() noexcept { pointer __p = get(); _M_t._M_ptr() = pointer(); return __p; } unique_ptr& operator=(unique_ptr&& __u) noexcept { reset(__u.release()); get_deleter() = std::forward<deleter_type>(__u.get_deleter()); return *this; }
-
-
使用
-
析构
-
拓展
C++11 智能指针 unique_ptr,让资源管理更简单,更安全
于 2022-01-21 22:06:41 首次发布