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

个人网站开发与设计摘要第三方微信小程序开发工具

个人网站开发与设计摘要,第三方微信小程序开发工具,企业网站ui,济宁个人网站建设价格便宜boost::weak_ptr和enable_shared_from_this shared_ptr在我的实践中使用很广,在接口层面上,我基本都会默认的使用shared_ptr.而weak_ptr则很少使用;即便使用,也是间接的使用,例如使得class A继承自boost::enable_shared_from_this,这样A便具有了一个weak_ptr的成员对象,我便可以…boost::weak_ptr和enable_shared_from_this shared_ptr在我的实践中使用很广,在接口层面上,我基本都会默认的使用shared_ptr.而weak_ptr则很少使用;即便使用,也是间接的使用,例如使得class A继承自boost::enable_shared_from_this,这样A便具有了一个weak_ptr的成员对象,我便可以通过接口shared_from_this()得到一个boost::shared_ptrA的对象. 除此之外,在实践中我几乎没有用到weak_ptr.到目前为止,我见到的对weak_ptr论述最好的是Beyond.the.C.plus.plus.Standard.Library.An.Introduction.to.Boost.本书给出了使用weak_ptr的三种场景: 打破递归的依赖关系;使用一个共享的资源而不需要共享所有权;避免悬空的指针. 后面两种场景相对比较容易明白,对于第一种则相对模糊.最近几天我相对仔细的研究了一下shared_ptr和weak_ptr的源代码,给出我自己的理解如下. weak_ptr是依附于shared_ptr的,所以首先要把shared_ptr弄清楚;另外,我认为boost::enable_shared_from_this是解释递归的依赖关系的最好例子,所以使用这个实例解释weak_ptr最好不过了. shared_ptr的图解 如图所示,3个智能指针对象sp1,sp2,sp3,共享同一个对象object和同一个计数器counter,当3个指针对象sp1,sp2,sp3声明周期结束的时候,counter0,object会被销毁(当然,这个销毁器本身可以由你定制). shared_ptr的一个很大的特点是:counter0,object会被销毁;反之,如果counter总是不为0,那么object会成为永久对象,例如全局对象. 在http://www.boost.org/doc/libs/1_35_0/libs/smart_ptr/sp_techniques.html中给出了一个从this获得shared_ptr的实例,答案是使用weak_ptr,问题是为什么是weak_ptr. 让我们把这个问题重新说明一下: struct X { boost::shared_ptrXgetX() { boost::shared_ptrXr ;//????如何实现 return r; } }; 要得到X的智能指针,只是在对象指针是受shared_ptr保护的基础上的,举例如下: void test_X() { { X x; boost::shared_ptrX px x.getX();//错误 } { X* x new X(); boost::shared_ptrX px x-getX();//错误 } { boost::shared_ptrX  x (new X()); boost::shared_ptrX px x-getX();//正确 } } 我们再回到原来的问题上,如何实现X::getX()函数.要构造X的智能指针,需要知道两个信息,object的指针和object的计数器,显然,指针本身可以通过this获得,问题是如何获得计数器,也即上面图中的counter.很显然,我们必须在X上存储某些信息来得到计数器. 最先想到的也许是使用一个指向counter的指针存储在X上面,这样应该是可以的,但是存在一个问题:暴露了shared_ptr的实现细节,虽然shared_ptr是基于计数器的,但是这不属于用户需要知道的事情.最好的方式是让shared_ptr本身来充当这个角色,这样所有的实现细节就都封装在shared_ptr内部了. 经过这样改装的shared_ptr的图解是: 经过这样包装的object,问题立刻暴露出来:循环引用,造成object对象无法释放,成为”全局对象”.很显然,问题在于object本身参与了引用计数,也就是所有权的分享.我们需要的是不同于shared_ptr的这样的一类共享指针:他们并不参与对象的所有权,只是能够观察到对象的所有权.而这正是weak_ptr的本质所在. 当然了,weak_ptr还有其他的特征:查看对象指针是否过期(这也是比裸指针好的地方). 循环引用的情况很罕见,这可能也是我在实际中很少使用weak_ptr的原因吧.
http://www.huolong8.cn/news/281736/

相关文章:

  • 中职国示范建设网站网站建设服务那家好
  • 有哪些做兼职的网站网站搭建徐州百度网络
  • 企业网站怎么建立做外贸推广的公司
  • 六安建设厅网站2023年国家免费技能培训
  • 大型网站建设定制开发建网站多少钱 万户
  • 如何做学校网站appdw网页制作软件免费
  • 网站策划薪资ip直接访问网站 备案
  • 天津网站建设方案维护做网站备案时间
  • 网站非法收录用户信息开发公司年终工作总结ppt
  • 网站开发公司哪个好景区电子商务网站建设
  • 网站说明怎么写网站建设具体要求
  • seo网站沙盒期内江 网站建设
  • 网站做百度推广能获取流量吗袜子技术支持北京网站建设
  • 建站公司都有哪些关于协会网站建设的建议
  • 微商城手机网站模板网站建设飠金手指科杰十五
  • 常州高端网站建设公司哪家好wordpress 插件 喜欢
  • 安宁网站建设与制作wordpress模板好用吗
  • 自己做菠菜网站服务外包下的网站开发
  • 清远市清城区网站建设公司沈阳做网站的设计公司哪家好
  • 顺丰物流网站建设策划书怎样制作网页超链接
  • 大学网站建设技术方案西乡移动网站建设
  • 南宁网站建站公司百度抓取网站频率
  • 电商系统网站开发seo sem是什么
  • 网站主要内容建设网站困难的解决办法
  • 婚纱摄影网站图片素材网有哪些
  • 苏州制作网站的公司简介建购物的网站需要多少钱
  • 地方新闻门户网站源码注册一个公司需要什么条件
  • 网站制作厂家有哪些关于电商运营的知识点
  • 上海专门做培训的网站柳江企业网站建设公司
  • 开发公司空置房物业费会计科目关键词优化seo外包