是否有推荐的方法来测试智能指针是否为空?

Sid*_*idd 10 c++ smart-pointers shared-ptr c++11

我正在尝试检查a std::shared_ptr是否为空.这样做有什么区别

std::shared_ptr<int> p;
if (!p) { // method 1 }
if (p == nullptr) { // method 2 }
Run Code Online (Sandbox Code Playgroud)

πάν*_*ῥεῖ 12

这样做有什么区别

 std::shared_ptr<int> p;
 if (!p) { // method 1 }
 if (p == nullptr) { // method 2 }
Run Code Online (Sandbox Code Playgroud)

不,没有区别.这两个操作都有一个正确定义的重载.

另一个等价物

 if(p.get() == nullptr)
Run Code Online (Sandbox Code Playgroud)