C++智能指针shared_ptr怎么使用

C++智能指针shared_ptr怎么使用

本篇内容介绍了“C++智能指针shared_ptr怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、什么是shared_ptr?

C++11中包括shared_ptr在内的多种指针,都是模板类型,意味着使用者可以指定想要操作的类型。

创建shared_ptr的方式如下:

shared_ptr<int>p1;//p1=NULL

2、shared_ptr支持哪些操作?

  • 创建:shared_ptr p = make_shared

  • 判断是否为NULL:if(p)

  • 获取指向对象

  • 等等

3、如何创建shared_ptr的实例?

通过C++的标准库中make_shared()函数动态的申请对象内存,并返回此对象的shared_ptr

shared_ptr<int>p1;p1=make_shared<int>(666);

4、什么是shared_ptr的引用计数?如何查看?

由于允许多个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指向同一对象,所以引用技术值为3cout<<p2.use_count()<<endl;

5、shared_ptr何时释放其所指向的对象?

当同一对象的引用计数变为0时,此对象所占空间就会被释放,

比如函数调用结束时:

classSP{public:~SP(){cout<<"DestroySP"<<endl;}};voidauto_destroy(){//创建SP类型的共享智能指针shared_ptr<SP>p1=make_shared<SP>();}

当调用auto_destroy()函数结束时,不需要手动的释放shared_ptr所指向的内存空间,系统会自动的销毁SP对象。

“C++智能指针shared_ptr怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!

发布于 2022-03-09 22:50:55
收藏
分享
海报
0 条评论
36
上一篇:Python的队列实例分析 下一篇:python的sort、sorted和argsort怎么使用
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码