-
总览
-
轻量级
-
默认
-
分析
template <typename _Tp, typename _Dp = default_delete<_Tp>> class unique_ptrtemplate<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; -
使用场景
-
总结
-
-
大小
-
说明
-
析构类
-
tupletemplate<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 首次发布
本文深入探讨了unique_ptr的设计理念,包括其轻量级特性、内存占用情况、析构过程及自定义析构方式。此外,还介绍了该智能指针的使用场景、移动语义的应用及其与其他智能指针之间的转换。
3万+

被折叠的 条评论
为什么被折叠?



