头文件:<memory>

声明:

template< class T > struct default_delete;
template< class T > struct default_delete<T[]>;

std::default_delete 是不指定删除器时 std::unique_ptr 所用的默认删除策略。 default_delete 的特化在典型实现上为空类,并且用于空基类优化。

  1. 非特化的 default_delete 用 delete 解分配单个对象的内存。
  2. 亦为提供数组类型的使用 delete[] 的部分特化。

成员函数:

operator()  \\ 删除对象或数组

void operator()(T* ptr) const;

在 ptr 上调用 delete ,仅为初等 default_delete 模板的成员。

ptr:要删除的对象或数组

template <class U>
void operator()(U* ptr) const;

在 ptr 上调用 delete[] 。此函数仅若 U(*)[] 能隐式转换为 T(*)[] 才参与重载决议。任何情况下,若 U 是不完整类型,则程序为谬构。

仅为 default_delete<T[]> 模板特化的成员

ptr:要删除的对象或数组

#include <memory>
#include <vector>
#include <algorithm>int main()
{
//    {
//        std::shared_ptr<int> shared_bad(new int[10]);
//    } // 析构函数调用 delete ,未定义行为{std::shared_ptr<int> shared_good(new int[10], std::default_delete<int[]>
());} // 析构函数调用 delete[] , ok{std::unique_ptr<int> ptr(new int(5));} // unique_ptr<int> 使用 default_delete<int>{std::unique_ptr<int[]> ptr(new int[10]);} // unique_ptr<int[]> 使用 default_delete<int[]>// default_delete 能用于需要删除用函数对象的任何场所std::vector<int*> v;for(int n = 0; n < 100; ++n)v.push_back(new int(n));std::for_each(v.begin(), v.end(), std::default_delete<int>());
}

c++11:std::default_delete相关推荐

  1. C++11: std::function<void()> func

    std::function介绍 类模版std::function是一种通用.多态的函数封装.std::function的实例可以对任何可以调用的目标实体进行存储.复制.和调用操作,这些目标实体包括普通 ...

  2. c++11:std::declval、decltype

    1.decltype是类型推导 #include <iostream>struct A { double x; }; const A* a;decltype(a->x) y; // ...

  3. c++11:std::chrono::time_point、time_t、std::localtime、std::gmtime、std::chrono::steady_clock

    template<class Clock,class Duration = typename Clock::duration> class time_point; 类模板 std::chr ...

  4. C++11 :STL中的 iota ()函数

    该函数是C++11 才引入,之前版本没有此函数. iota 函数是一个计算机语言中的函数,用于产生连续的值.该函数得名自 APL 语言,其中用来产生从 1 开始的连续数值. 该函数位于头文件#incl ...

  5. C++11中std::future的使用

    C++11中的std::future是一个模板类.std::future提供了一种用于访问异步操作结果的机制.std::future所引用的共享状态不能与任何其它异步返回的对象共享(与std::sha ...

  6. 概率论中指数分布介绍及C++11中std::exponential_distribution的使用

    指数分布:在深度学习中,我们经常会需要一个在x=0点处取得边界点(sharp point)的分布.为了实现这一目的,我们可以使用指数分布(exponential distribution): p(x; ...

  7. C++/C++11中std::string用法汇总

    C++/C++11中std::string是个模板类,它是一个标准库.使用string类型必须首先包含<string>头文件.作为标准库的一部分,string定义在命名空间std中. st ...

  8. [C++]C++11:Function与Bind

    std::function 它是函数.函数对象.函数指针.和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针. 以统一的方式处理函数.函数对象.函数指针.和成员函数. ...

  9. C++11:move移动语义

    前言 我们知道移动语义是通过右值引用来匹配临时值,那么,普通的左值是否也能借助移动语义来优化性能呢,C++11为了解决这个问题,提供了std::move方法来将左值转换成右值. 正文 move是将对象 ...

最新文章

  1. QIIME 2教程. 25可用和开发中插件AvailableFuturePlugins(2020.11)
  2. idea maven中的profiles是干什么的
  3. hdu 3932Groundhog Build Home 【爬山算法】
  4. JavaScript入门(part12)--内置对象
  5. android 开发书签大全,一站式的导航分享!
  6. VC6编辑直接采用Linux换行符,Tips: VC++篇
  7. arts-week12
  8. linux硬盘只读脚本 zabbix,Zabbix如何设置脚本告警
  9. 【名单回顾】CSP-J2 2019年第二轮入门级获奖名单(仅列北京地区小学生)
  10. python 美化ppt_python操作PPT------PPT内容样式调整
  11. 固定资产管理流程步骤
  12. 【九层之台】Web开发教程:0. 准备
  13. KEIL5护眼背景色以及字体颜色
  14. [RK3568 Android11] 教程之cm32181光线传感器驱动
  15. MySQL 错误. Packet for query is too large (*** 4194304). You can change......
  16. OSS——阿里OSS
  17. 【数论】同余(一):同余的基本概念与性质
  18. 我拍,我再拍,我拍拍拍
  19. 努力工作的意义是什么?致迷失的自己
  20. Intel RealSense L515 motion的计算与可视化

热门文章

  1. 树莓派/图像/人脸识别
  2. IntelliJ IDEA远程debug调试
  3. idea远程调试springboot
  4. javaweb课程设计网上书店
  5. 解散等内容的飞鸽传书
  6. 数据驱动决策:如何用数据分析推动业务增长
  7. 抽象类和接口的相同点和不同点
  8. 小强升职记思维导图_《小强升职记》学习笔记(思维导图)
  9. MySQL数据备份批处理
  10. java linux 读取文件内容_java访问Linux服务器读取文件