shared_ptr初探
2016-04-19 16:20
225 查看
shared_ptr<int> sp(new int(10));
assert(sp.unique());
shared_ptr<int> sp2(sp);
shared_ptr<int> sp3=sp;
shared_ptr<int> sp4(new int(5));
assert(sp==sp2 && sp.use_count()==3 );
*sp=100;
assert(*sp2==100 );
sp.reset(new int(6));
assert(sp3.use_count()==2);
assert(sp2.use_count()==2);
assert(sp.use_count()==1);
system("pause");
1 提供了*
,-> 模仿原始指针的行为
2提供隐式bool类型转换,判断指针的有效性
3 get()得到原始指针。Y *p
4 sharet_ptr多种构造函数:
1)shared_ptr():空指针
2)shared_ptr
(Y *p):shared_ptr<int>(new int).引用计数置1
3)shared_ptr(shared_ptr const & r):shared_ptr
sp1(sp).引用计数加1
4)shared_ptr(std::auto_ptr<Y> & r) 从一个auto_ptr获得指针管理权,引用计数置为1,同时auto_ptr自动失去管理权
5赋值构造:
shared_ptr<int> sp3=sp;
6关于reset()
Sp.reset();//非reset调用对象的引用计数减1.停止对指针与sp的共享,sp为空指针
sp.reset(new int(6));//原指针引用计数-1 管理新指针new int(6)
assert(sp.unique());
shared_ptr<int> sp2(sp);
shared_ptr<int> sp3=sp;
shared_ptr<int> sp4(new int(5));
assert(sp==sp2 && sp.use_count()==3 );
*sp=100;
assert(*sp2==100 );
sp.reset(new int(6));
assert(sp3.use_count()==2);
assert(sp2.use_count()==2);
assert(sp.use_count()==1);
system("pause");
1 提供了*
,-> 模仿原始指针的行为
2提供隐式bool类型转换,判断指针的有效性
3 get()得到原始指针。Y *p
4 sharet_ptr多种构造函数:
1)shared_ptr():空指针
2)shared_ptr
(Y *p):shared_ptr<int>(new int).引用计数置1
3)shared_ptr(shared_ptr const & r):shared_ptr
sp1(sp).引用计数加1
4)shared_ptr(std::auto_ptr<Y> & r) 从一个auto_ptr获得指针管理权,引用计数置为1,同时auto_ptr自动失去管理权
5赋值构造:
shared_ptr<int> sp3=sp;
6关于reset()
Sp.reset();//非reset调用对象的引用计数减1.停止对指针与sp的共享,sp为空指针
sp.reset(new int(6));//原指针引用计数-1 管理新指针new int(6)
相关文章推荐
- Win7与Ubuntu双系统下 卸载Ubuntu
- Android:View事件分发机制详解
- 11. Container With Most Water
- 如何在ubuntu通过命令行更新到java7版本
- Unity+高通Vuforia SDK——AR播放视频
- 高效率去掉js数组中重复项
- 数据结构和算法设计专题之---二分查找(Java版)
- IOS 网络请求中设置cookie
- vector_01
- Android Intent实现页面之间跳转
- Android应用中仿今日头条App制作ViewPager指示器
- java串口通讯带UI界面
- RabbitMQ 入门 Helloworld
- tomcat自启动脚本
- DHCP服务器/ iLO配置
- Docker 批量push脚本
- bzoj 2809: [Apio2012]dispatching
- C 结构体小结
- 安卓桌面悬浮窗
- iOS开发进阶之图说