您好,登录后才能下订单哦!
本篇内容介绍了“C++智能指针shared_ptr怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
C++11中包括shared_ptr
在内的多种指针,都是模板类型,意味着使用者可以指定想要操作的类型。
创建shared_ptr的方式如下:
shared_ptr<int>p1; // p1=NULL
创建:shared_ptr p = make_shared
;
判断是否为NULL
:if(p)
获取指向对象
等等
通过C++的标准库中make_shared()
函数动态的申请对象内存,并返回此对象的shared_ptr
:
shared_ptr<int>p1; p1 = make_shared<int>(666);
由于允许多个shared_ptr
指向同一个对象,所以C++支持“引用计数”,也就是统计同一对象被多少个shared_ptr
所指向。当某对象的shared_ptr增加时,引用计数随之加一;当某对象的shared_ptr
减少时,引用计数随之减一。
shared_ptr对象的use_count的函数成员返回引用计数值:
shared_ptr<int>p2, p3; p2 = p1; p3 = p1; // p1,p2,p3指向同一对象,所以引用技术值为3 cout << p2.use_count() << endl;
当同一对象的引用计数变为0时,此对象所占空间就会被释放,
比如函数调用结束时:
class SP { public: ~SP() { cout << "Destroy SP" << endl; } }; void auto_destroy() { // 创建SP类型的共享智能指针 shared_ptr<SP>p1 = make_shared<SP>(); }
当调用auto_destroy()
函数结束时,不需要手动的释放shared_ptr
所指向的内存空间,系统会自动的销毁SP对象。
“C++智能指针shared_ptr怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。