检查std :: shared_ptr中是否为null

用户1400995

我在想,如果我需要检查是否spnull之前我用它。如果我错了,请纠正我,但是创建别名不会增加引用计数器,因此,通过进入该方法,我们正在使用共享指针,而该指针不知道嵌入式指针是否已在之前重置。假设这个?

Class::MyFunction(std::shared_ptr<foo> &sp)
{    
    ...  
    sp->do_something();  
    ...  
}
詹姆斯·坎泽

在这方面,大多数共享指针与普通指针完全一样。您必须检查是否为空。根据功能,您可能需要切换到使用

void myFunction( Foo const& foo );

,并通过取消对指针的引用来调用它(这将确保指针对调用者的责任为空)。

另外,除非有一些特殊的所有权语义,否则使函数采用共享指针可能是一个坏习惯如果函数仅在函数持续时间内使用指针,而不更改它或不拥有所有权,则原始指针可能更合适,因为它对调用者的约束较少。(但这实际上很大程度上取决于该函数的功能以及使用共享指针的原因。当然,您已经向共享指针传递了一个非常量引用这一事实假设您将要对其进行修改,因此传递共享指针可能是适当的。)

最后,共享指针的不同实现使得或多或少难检查空值。使用C ++ 11,您可以使用std::shared_ptr,并且可以将其nullptr自然地进行比较,这正是您所期望的。然而,Boost的实现在这方面有些破损。您不能仅将其与0进行比较NULL您必须boost::shared_ptr为比较构造一个空值,或者调用get它并比较生成的原始指针到0NULL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: shared_ptr为null但不为空

来自分类Dev

std :: shared_ptr并发访问健全性检查

来自分类Dev

在msvs 2013中为std :: shared_ptr的compare_exchange_weak损坏了吗?

来自分类Dev

返回std :: shared_ptr的向量是否安全?

来自分类Dev

如何检查std :: unique_ptr是否为空(如果它位于std :: vector中)?

来自分类Dev

QVariant与std :: shared_ptr

来自分类Dev

QVariant与std :: shared_ptr

来自分类Dev

是否存在从std :: shared_ptr <T>到std :: shared_ptr <const T>的隐式转换?

来自分类Dev

替换std :: vector中的shared_ptr元素

来自分类Dev

在lambda中锁定std :: shared_ptr的复制操作

来自分类Dev

Bison中的std :: shared_ptr导致成员错误

来自分类Dev

替换std :: vector中的shared_ptr元素

来自分类Dev

C++ 中 std::shared_ptr 数组的工作原理

来自分类Dev

在信号处理程序中使用`std :: shared_ptr`和`std :: weak_ptr`是否安全?

来自分类常见问题

在C ++中,空std :: shared_ptr和空std :: shared_ptr有什么区别?

来自分类Dev

使用std :: move与std :: shared_ptr

来自分类Dev

我在链表实现中的std :: shared_ptr和std :: unique_ptr怎么办?

来自分类Dev

std :: shared_ptr和继承

来自分类Dev

std :: shared_ptr深层复制对象

来自分类Dev

std :: function和shared_ptr

来自分类Dev

使用* this作为std :: shared_ptr

来自分类Dev

数据与memcpy的std :: shared_ptr分配

来自分类Dev

std :: shared_ptr预分配内存

来自分类Dev

std set of boost :: shared_ptr <string>

来自分类Dev

可重用的std :: shared_ptr

来自分类Dev

std :: shared_ptr深层复制对象

来自分类Dev

数据与memcpy的std :: shared_ptr分配

来自分类Dev

使用* this作为std :: shared_ptr

来自分类Dev

std :: shared_ptr初始化

Related 相关文章

热门标签

归档