为什么我应该更喜欢对智能指针的引用而不是智能指针作为 C++ 中的参数

Why should I prefer references on smart pointers over smart pointers as parameters in C++

我目前正在编写一些代码 (c++11),它大量使用指针引用,例如

class SomeClass;

class MyClass
{
public:
   MyClass( const std::shared_ptr < SomeClass > & class) 
    : m_class(class)
   {}

private:
   std::shared_ptr < SomeClass > m_class
}

我对此进行了一些性能测试(使用Visual Studio 2013 VC12),时间上似乎没有差异。交个Null-Ptr也是可以的

那么在这种情况下使用引用的可能原因是什么?

可能的原因是:

  1. 性能。按值传递引用(一个 CPU 寄存器)而不是智能指针应该更快。您的性能测试有问题。
  2. 保存堆栈space。按值传递的智能指针比引用在堆栈上占用更多 space。