如何将boost::shared_ptr写为null

How to write boost::shared_ptr as null?

本文关键字:ptr 写为 null shared boost      更新时间:2023-10-16

如何将默认构造的boost::shared_ptr作为空指针?这样做对吗:

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

现在socket_stub为NULL吗?

boost::shared_ptr默认构造为空指针,该指针本质上为null。请参阅stard_ptr默认构造函数的文档。

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

只是:

socket_stub = nullptr;

应该对CCD_ 3起作用。我希望:

socked_stub = NULL;

boost::shared_ptr做这个把戏,但我不知道。boost::shared_ptr在关于空指针的几个方面被破坏,这可能是其中之一。(IIRC,if ( someSharedPtr == NULL )不起作用,这被认为是严重的,足以排除在我工作过的大多数地方使用boost::shared_ptr。)

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