shared_ptr
页面指出了std::shared_ptr
的empty和null之间的区别。 cppreference.com没有明确说明这种区别,但在对std::shared_ptr
行为的描述中同时使用了“empty”和与nullptr
的比较。
shared_ptr
是空的和null的有什么区别? 这种混合行为指针是否有任何用途? 非空的null shared_ptr
是否有意义? 在正常使用情况下(即如果您没有显式构造一个),是否会出现空但非null的shared_ptr
?如果使用Boost版本而不是C++11版本,上述答案是否有所改变?
shared_ptr
实例。”还值得提到前面的注释(p15):“为了避免悬挂指针的可能性,使用此构造函数的用户必须确保p
至少在r
的所有权组被销毁之前保持有效。” 这是一个很少使用的构造方法。 - WhozCraigshared_ptr
,其get()
返回nullptr
,无论它是否拥有任何内容,都与nullptr
相等。 - T.C.shared_ptr
在确保所有拥有指针超出作用域后(即使出现异常!)执行某些函数时可能是有用的。不确定是否现在有一个专门的类来实现这个功能。 - coldfixr
共享所有权”而不是“拥有r
拥有的任何东西”的措辞。 - Jonathan Wakely