首页 > 其他分享 >shared_ptr 自定义 deleter 删除器

shared_ptr 自定义 deleter 删除器

时间:2023-04-05 15:24:19浏览次数:48  
标签:Bar 自定义 sp1 deleter1 shared ptr deleter

  • make_shared 不支持自定义删除器
  • shared_ptr<Bar> sp2(sp1, deleter1); 无法指定自定义删除器?
    • 《C++ Primer 5th》P413 错误?
    • sp1 不能是智能指针,可以是内置指针
  • reset 参数为内置指针,可以重新指定删除器

测试代码

class Bar {
   public:
    Bar(int ii) : i(ii) { cout << "Bar(" << i << ")" << endl; }
    ~Bar() { cout << "~Bar(" << i << ")" << endl; }
    int i;
};

void deleter1(Bar* b) { cout << "deleter1 (" << b->i << ")" << endl; }

int main() {
    shared_ptr<Bar> sp1(new Bar(1), deleter1);
    auto sp2 = sp1;  // OK
    // shared_ptr<Bar> sp2(sp1, deleter1);  // NOK
    cout << endl;
    sp1.reset(new Bar(2));

    // 先析构 sp2--> Bar1 ,再析构 sp1 --> Bar2
}

运行结果

Bar(1)

Bar(2)
deleter1 (1)
~Bar(2)

标签:Bar,自定义,sp1,deleter1,shared,ptr,deleter
From: https://www.cnblogs.com/tengzijian/p/17289473.html

相关文章

  • grafana自定义图形
    启用zabbix插件         目前看导致这个报错的主要原因是grafana版本太低导致,看样子是要升级grafana版本了。(最好下载grafana最新几个版本中的某个,避免出现安装zabbix插件后,grafana的plugins中可以看到zabbix但可用数据源中又不展示的问题)安装参考:https://bl......
  • 【fastweixin框架教程7】微信企业号自定义菜单接口开发
     下面这个类我对fastweixin框架的简单封装调用,大家可以参考,如果需要QYAPIConfigExt和MainServernSupport,请参考本教程以前几篇文章  应用可以在会话界面底部设置自定义菜单,菜单项可按需设定,并可为其设置响应动作。用户可以通过点击菜单项,收到你设定的消息。企业号支持自定义......
  • Abp自定义模块种子数据
    模块的初始化或者系统的基本运行需要一些基础数据,可以利用ABP提供的种子数据基础上设置进行数据播种。自定义模块自定义模块可以定义自己的DataSeeder,例如数据字典:publicinterfaceIDataDictionaryDataSeeder{TaskSeedAsync(stringname,stringvalue);}定义......
  • Js/Jquery获取自定义属性的方法
    html:<spanid="item"data-test='test'></span>方法一、原生JS的getAttribute获取自定义属性设置属性.setAttribute("属性","值")获取属性.getAttribute("属性")varspan=document.getElementById('item').ge......
  • Android 手把手教您自定义ViewGroup(一)
    本文出自:【张鸿洋的博客】最近由于工作的变动,导致的博客的更新计划有点被打乱,希望可以尽快脉动回来~今天给大家带来一篇自定义ViewGroup的教程,说白了,就是教大家如何自定义ViewGroup,如果你对自定义ViewGroup还不是很了解,或者正想学习如何自定义,那么你可以好好看看这篇博客。1、......
  • 深入理解Magento – 第七章 – 自定义Magento系统配置
    深入理解Magento作者:AlanStorm翻译:HailongZhang第七章–自定义Magento系统配置Magento拥有十分强大的后台管理系统。作为一名开发人员,这套后台管理系统可以让你的用户简单直接的配置Magento系统或者你创建的模块。和Magento的其他功能一样,你第一次使用这套管理系统的时候可......
  • android 评分条 RatingBar 使用及自定义
    一、先上效果图片:  第一个是自定义;  第二个是原生的: 二、atingBarRatingBar是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定。使用RatingBar的默认大小时,用户可以触摸/拖动或使用键来设置评分,它有两种样式(小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndica......
  • Halo自定义部分扩展
    简介Halo是一款现代化的开源博客/CMS系统,前端由Vue,后端java开发的。我选择的原因是因为是java开发的,所以方便我自定义的扩展。MinIO扩展在我们写博客的时候经常会用到图片,Halo支持多种文件存储方式。这里我选择了MinIO,但是在使用的过程中发现了一个小的问题,它上传的文件是按照......
  • 第六篇:自定义集合类型和结构体取代类
    第六篇:自定义集合类型和结构体取代类目录第六篇:自定义集合类型和结构体取代类一、自定义集合类型二、结构体取代类1make和new的区别2结构体取代类一、自定义集合类型集合是一个重要的数据结构,其中,集合中的元素不能重复;集合中的元素无序排列,由于go中没有集合元素,我们可以通过m......
  • 设计模式(三十一)----综合应用-自定义Spring框架-自定义Spring IOC-定义解析器、IOC容
    3定义解析器相关类3.1BeanDefinitionReader接口BeanDefinitionReader是用来解析配置文件并在注册表中注册bean的信息。定义了两个规范:获取注册表的功能,让外界可以通过该对象获取注册表对象。加载配置文件,并注册bean数据。/***@versionv1.0*@ClassName:BeanDe......