如何将默认构造的boost :: shared_ptr设为空指针? 这样做是正确的:
boost::shared_ptr< ModuleStubSocket_C > socket_stub;
socket_stub = boost::shared_ptr< ModuleStubSocket_C >();
现在socket_stub是否为NULL?
答案 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