欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Cpp / shared_ptr 配置删除器的方法

发布时间:2024/10/14 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Cpp / shared_ptr 配置删除器的方法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、普通函数

void Deleter(T *x) {delete[] x; }std::shared_ptr<T> p1(new T[5], Deleter);

二、仿函数

class Deleter { public:void operator() (T *x) {delete[] x;} };std::shared_ptr<T> p2(new T[5], Deleter);

三、lamda 表达式

std::shared_ptr<T> p3(new T[5], [](T *x) {delete[] x; });

四、源代码

shared_ptr(_Yp* __p, _Deleter __d): __shared_ptr<_Tp>(__p, std::move(__d)) { }/*** @brief Construct a %shared_ptr that owns a null pointer* and the deleter @a __d.* @param __p A null pointer constant.* @param __d A deleter.* @post use_count() == 1 && get() == __p* @throw std::bad_alloc, in which case @a __d(__p) is called.** Requirements: _Deleter's copy constructor and destructor must* not throw** The last owner will call __d(__p)*/

从源代码注释中可以知道,当释放 __p 时,实际上就是调用 __d(__p),所以只要满足返回值为 void ,传入的删除器有单一形参并且形参为 T 的指针即可,

栗子:

void Deleter(T *)void Deleter(T * const)void Deleter(T *&)

 

(SAW:Game Over!)

总结

以上是生活随笔为你收集整理的Cpp / shared_ptr 配置删除器的方法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。