Cpp / shared_ptr 配置删除器的方法
生活随笔
收集整理的這篇文章主要介紹了
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 配置删除器的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/Cpp / 参数传递时如何防止数组退
- 下一篇: 测试 / 单元测试的重要性