shared_ptr使用问题

冷风1023 2018-06-26 12:05:38
在使用shared_ptr的值之前怎么对shared_ptr做安全检查,例如普通指针可以通过(!p)来检查,那智能指针怎么检查呢?
...全文
278 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷风1023 2018-06-28
  • 打赏
  • 举报
回复
??????????
冷风1023 2018-06-27
  • 打赏
  • 举报
回复
直接写你要写的东西呀,已经判断是否为空了,还要咋样
引用 5 楼 zjjone 的回复:

谢谢答复,那么如果我赋值给shared_ptr,但取的值如果不对怎么像普通指针一样把一个NULL赋值给shared_ptr呢?
例如:
int *p = NULL;
if(xxxxx)
{
p =NULL;
}
改成shared_ptr
shared_ptr<int> p_ptr;
if (xxxxx)
{
p_ptr=?//这里应该怎么写呢?
}

我刚刚没有写仔细这样
if(xxxxx)
{
return p;//这里p是可以用的
}
else
{
return NULL;
}
改成shared_ptr
if (xxxxx)
{
return p_ptr;//这里p_ptr可用
}
else
{
return ?????//这里返回什么呢
//是否可以这样
shared_ptr<int> pp;
return pp;//这里pp也是空,可以像NULL一样返回?
}
sghcpt 2018-06-27
  • 打赏
  • 举报
回复
楼主可以调用shared_ptr中的reset函数,重新设置,然后类似调用shared_ptr::operator bool函数来判断智能指针当前是否为空。
Groves_Lin 2018-06-27
  • 打赏
  • 举报
回复
直接写你要写的东西呀,已经判断是否为空了,还要咋样
引用 5 楼 zjjone 的回复:
谢谢答复,那么如果我赋值给shared_ptr,但取的值如果不对怎么像普通指针一样把一个NULL赋值给shared_ptr呢?
例如:
int *p = NULL;
if(xxxxx)
{
p =NULL;
}
改成shared_ptr
shared_ptr<int> p_ptr;
if (xxxxx)
{
p_ptr=?//这里应该怎么写呢?
}
冷风1023 2018-06-27
  • 打赏
  • 举报
回复
谢谢答复,那么如果我赋值给shared_ptr,但取的值如果不对怎么像普通指针一样把一个NULL赋值给shared_ptr呢?
例如:
int *p = NULL;
if(xxxxx)
{
p =NULL;
}
改成shared_ptr
shared_ptr<int> p_ptr;
if (xxxxx)
{
p_ptr=?//这里应该怎么写呢?
}
青春老张 2018-06-26
  • 打赏
  • 举报
回复
访问成员函数。,.unique来检查是否独占
paschen 版主 2018-06-26
  • 打赏
  • 举报
回复
智能指针类中已经做了相关处理,可以直接用if(p)或者if(!p)判断
待续_1006 2018-06-26
  • 打赏
  • 举报
回复
一样的啊,shared_ptr重载了bool类型和!运算符,也可以 if(p) 或者 if(!p)
sdghchj 2018-06-26
  • 打赏
  • 举报
回复
一样的啊,shared_ptr重载了bool类型和!运算符,也可以 if(p) 或者 if(!p)

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧