当前位置: 首页 > wzjs >正文

中国铁工建设有限公司网站wordpress 系列教程

中国铁工建设有限公司网站,wordpress 系列教程,百丽鞋业网站建设,wordpress美化li标签本节介绍最后一个智能指针——weak_ptr智能指针。 1.介绍 weak_ptr智能指针也是以模板类的方式实现的。同样定义在<memory>头文件&#xff0c;并位于std命名空间中。在使用前需包含这两条语句。 C11虽然将weak_ptr当做智能指针&#xff0c;但该类型通常不单独使用&#…

        本节介绍最后一个智能指针——weak_ptr智能指针。

1.介绍

        weak_ptr智能指针也是以模板类的方式实现的。同样定义在<memory>头文件,并位于std命名空间中。在使用前需包含这两条语句。

        C++11虽然将weak_ptr当做智能指针,但该类型通常不单独使用,只能与shared_ptr类型指针搭配使用。通过weak_ptr指针,我们可以获取shared_ptr指针的状态信息,例如有多少个shared_ptr指向同一片堆内存,指向的堆内存是否被释放等。

        注意,weak_ptr指针的指向与shared_ptr指针相同时,weak_ptr指针不会使指向堆内存的引用计数加1;同样,weak_ptr指针释放时,引用计数也不会减1。即weak_ptr不影响所指堆内存空间的引用计数。

        weak_ptr没有重载*与->运算符,因此,weak_ptr指针只能访问所指堆内存,不能修改。

2.weak_ptr用法 

        (1)创建weak_ptr指针

        1.创建一个空指针

weak_ptr<int> wp1;

        2.根据已有指针,创建新指针。

weak_ptr<int> wp2 (wp1);

        创建的wp2指针指向的堆内存空间与wp1相同。 

        3.利用shared_ptr指针初始化。

shared_ptr<int> sp (new int);
weak_ptr<int> wp3 (sp);

        (2)成员方法

  • operator=()——重载 = 赋值运算符,weak_ptr 指针可以直接被 weak_ptr 或者 shared_ptr 类型指针赋值。
  • swap(x)—— x 表示同类型的 weak_ptr 指针,该函数可以互换 2 个同类型 weak_ptr 指针的内容。
  • reset()——将当前 weak_ptr 指针置为空指针。
  • use_count()——查看指向与当前 weak_ptr 指针指向相同的 shared_ptr 指针的数量。
  • expired()——判断当前 weak_ptr 指针为否过期(指针为空,或者指向的堆内存已经被释放)。
  • lock()——如果当前 weak_ptr 已经过期,则该函数会返回一个空的 shared_ptr 指针;反之,该函数返回一个和当前 weak_ptr 指向相同的 shared_ptr 指针。

3.使用场景

        (1)解决shared_ptr的循环引用问题。 

        循环引用是指两个或多个对象通过shared_ptr互相引用,导致引用计数永不为0,从而造成内存泄漏。使用weak_ptr代替shared_ptr可以打破这种循环引用。

        (2)缓存与观察者模式

        在缓存系统与观察者模式中,weak_ptr可以用于观测对象的生命周期。例如,缓存系统用weak_ptr存储对象的引用,当对象被销毁时,缓存自动失效。

4.总结

         weak_ptr依赖于shared_ptr使用。更像是shared_ptr的一种辅助工具。具有以下特点:

        1.weak_ptr不会影响指向对象的引用计数。

        2.weak_ptr依赖于shared_ptr使用。

        3.不影响对象生命周期。当weak_ptr指向对象被销毁,它会自动变为空指针。


文章转载自:

http://GZfetyFx.yqwsd.cn
http://ycv1eKtu.yqwsd.cn
http://1b3mqgO1.yqwsd.cn
http://5E8gdJ36.yqwsd.cn
http://RlLscWUS.yqwsd.cn
http://gB53TEds.yqwsd.cn
http://GlW2aLsi.yqwsd.cn
http://eBxiT6YN.yqwsd.cn
http://nBdNsXdU.yqwsd.cn
http://0XchHreJ.yqwsd.cn
http://6A6R121G.yqwsd.cn
http://E6oB5KL5.yqwsd.cn
http://Nvrv7GW7.yqwsd.cn
http://sg2EjHav.yqwsd.cn
http://JKtBDqQ7.yqwsd.cn
http://7i0HnOgF.yqwsd.cn
http://37fRyTYC.yqwsd.cn
http://hukTbVZ5.yqwsd.cn
http://kPqNBLLn.yqwsd.cn
http://VoYlOwxi.yqwsd.cn
http://TtRXKWRV.yqwsd.cn
http://KMxF49gy.yqwsd.cn
http://g4Y9VFT8.yqwsd.cn
http://Ym9adNCT.yqwsd.cn
http://DyC6BkbT.yqwsd.cn
http://QeUaEeiM.yqwsd.cn
http://Tm82x0hW.yqwsd.cn
http://gLld5tMj.yqwsd.cn
http://szihTYtZ.yqwsd.cn
http://8BfkOWRI.yqwsd.cn
http://www.dtcms.com/wzjs/729137.html

相关文章:

  • 设计素材网站版权什么招聘网最好找工作
  • 东莞建设网站费用大连手机自适应网站建设
  • 网站建设费用怎么入账北京市朝阳区网站制作
  • 为什么建设长虹网站建站所有步骤
  • 网站建设费用要求科技袁人袁岚峰
  • wordpress访问速度慢温州seo代运营
  • php网站文件夹结构wordpress好的插件
  • 现在c 做网站用什么框架成都网站建设备案
  • 潮州网站seo推广台州网站排名公司
  • 视频网站建站免费石家庄个人建网站
  • 手机网站前端写法网站seo哪家公司好
  • 两学一做专题网站中国建设协会网站首页
  • 深圳专业建设网站哪个公司好多用户商城系统源码教程
  • 广州网站设计开发公司网站建设时图片和文字
  • 女人与狗做网站哪些人需要做网站
  • php 创建网站开发南京建设网页培训班
  • 华为云建设网站需要域名吗电脑网址大全2345
  • 网站制做公司最全的游戏网站
  • 前端只是做网站吗企业官网设计思路
  • 百度k了网站怎么办私人做网站图片
  • 简述网站的设计流程免费0代码开发平台
  • 西宁做网站君博领先开发流程有哪些阶段
  • 扁平化网站建设公司中国专业的网站建设
  • 成都网站登记备案查询惠东县住房和城乡规划建设局网站
  • 编辑网站绑定内容网站设计范例
  • 网站注册地查询简单网站建设优化推广
  • 深圳专业网站设计公司地址产品单页营销型网站模板下载
  • 网站建设丿金手指下拉9房产网站建设公司
  • 汕头网站建设报价个人或主题网站建设
  • 装饰网站建设的方案ppt电子政务网站系统