首页 > 其他 > 详细

关于智能指针

时间:2014-12-18 22:11:02      阅读:362      评论:0      收藏:0      [点我收藏+]

对share_ptr,属于强引用型的智能指针。内部通过引用计数实现对对象的管理,在引用计数为0时,自动释放对象。使用share_ptr的缺点是:会造成对象的循环引用,导致对象永远无法释放,比如:

Share_ptr可以在多线程中使用,确保指针指向的对象是有效的。

 

Weak_ptr是弱引用性的智能指针。Weak_ptr不对造成对象的引用技术的增加。因此不会造成对象的循环引用,weak_ptr可以通过引用计数或者 成员函数expired来判断对象是否已经释放。在访问对象时。但是在使用时需要把weak_ptr转换为share_ptr指针比如:

 shared_ptr<string> sp (new string("code"));
   cout<<*sp<<endl;
   weak_ptr<string> wp = sp;
   cout<<wp.use_count()<<endl;
   cout<<wp.lock()->c_str()<<endl;

   shared_ptr<string> tempsp(wp);
   cout<<wp.use_count()<<endl;
   cout<<*tempsp<<endl;

bubuko.com,布布扣

关于智能指针

原文:http://www.cnblogs.com/xgcode/p/4172702.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!