为什么我应该更喜欢对智能指针的引用而不是智能指针作为 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也是可以的
那么在这种情况下使用引用的可能原因是什么?
可能的原因是:
- 性能。按值传递引用(一个 CPU 寄存器)而不是智能指针应该更快。您的性能测试有问题。
- 保存堆栈space。按值传递的智能指针比引用在堆栈上占用更多 space。
我目前正在编写一些代码 (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也是可以的
那么在这种情况下使用引用的可能原因是什么?
可能的原因是:
- 性能。按值传递引用(一个 CPU 寄存器)而不是智能指针应该更快。您的性能测试有问题。
- 保存堆栈space。按值传递的智能指针比引用在堆栈上占用更多 space。