【问题标题】:Why should I prefer references on smart pointers over smart pointers as parameters in C++ [duplicate]为什么我应该更喜欢智能指针的引用而不是智能指针作为 C++ 中的参数 [重复]
【发布时间】:2015-11-06 05:25:25
【问题描述】:

我目前正在编写一些代码 (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 也是可以的。

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

【问题讨论】:

  • 否则 - 它创建一个副本并增加 ref_count 直到删除。我错了吗,@BartoszKP?
  • @VictorPolevoy 只要构造函数存在,参数就会被删除,所以没关系。并且仍然为m_class制作了一份副本。

标签: c++ pointers c++11 pass-by-reference pass-by-pointer


【解决方案1】:

可能的原因有:

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

【讨论】:

    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2015-10-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多