如何将boost :: shared_ptr写为null?

时间:2015-02-05 11:48:16

标签: c++ shared-ptr

如何将默认构造的boost :: shared_ptr设为空指针?  这样做是正确的:

   boost::shared_ptr< ModuleStubSocket_C > socket_stub;
   socket_stub = boost::shared_ptr< ModuleStubSocket_C >();

现在socket_stub是否为NULL?

4 个答案:

答案 0 :(得分:1)

boost::shared_ptr默认构造为空指针,基本上为空。请参阅stared_ptr default constructor的文档。

答案 1 :(得分:1)

第二行是多余的。它再次调用相同的默认构造函数来创建临时空指针,然后将其分配给已经是空指针的socket_stub

答案 2 :(得分:0)

只需:

socket_stub = nullptr;

应该为std::shared_ptr做点什么。我希望:

socked_stub = NULL;

使用boost::shared_ptr进行操作,但我不知道。关于空指针,boost::shared_ptr在几个方面被打破了,这可能就是其中之一。 (IIRC,if ( someSharedPtr == NULL )没有工作,这被认为是严重到足以在我工作过的大多数地方排除使用boost::shared_ptr。)

答案 3 :(得分:0)

boost::shared_ptr<>初始化为nullptr。但是,如果您想将任何shared_ptr<>重置为指向nullptr,您可以拨打电话。

auto ptr = boost::shared<int>();
// some other code doing something with ptr
ptr.reset(); // ptr now points to NULL
// you can assign a new pointer too!
ptr.reset(&intvar); // ptr now points to the memory location of the intvar variable