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

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

<分区>

我目前正在编写一些代码 (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. 节省堆栈空间。按值传递的智能指针比引用占用更多堆栈空间。

关于c++ - 为什么我应该更喜欢对智能指针的引用而不是智能指针作为 C++ 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31984925/

相关文章:

c++ - 获取 Cstrings 的控制台输入

c++ - 无法访问 IplImage 数据

c++ - 为什么在 C++0x 或 Boost.Thread 中没有针对多个互斥锁的作用域锁?

过多限制特化的 C++ 模板声明

重载构造函数的 C++ 调用不明确

c++ - C++ 规范是否允许非虚拟类的实例包含用于 vtable 指针的内存?

c++ - 我想预先递增对变量的赋值(预先递增超过 1 的值)?

c++ - Windows 上最快的屏幕捕获方法

pointers - 如何 WDDX ColdFusion 结构并维护指针或递归

c++ - 使用指向类成员和结构成员的指针之间的差异