0

可能重复:
按引用传递比按值传递更昂贵

我想知道哪个更好,在 C++ 中按值或按引用发送参数。我听说有些情况下按值发送比按引用发送更快。这些是哪些案例?

谢谢

4

2 回答 2

1

显而易见的情况是,当参数的大小等于或小于指针并且复制起来很简单时——那么您将按值传递。然而,这是一个古老的讨论,需要很长的答案才能正确回答给定的架构。还有许多极端情况(例如 RVO)。

这个问题比速度更重要——语义应该是你的首要任务。

另请参阅:在 C++ 中通过值传递还是通过常量引用传递更好?

于 2012-11-08T09:38:02.210 回答
1

作为一般规则,您应该通过值传递 POD 类型,通过 const 引用传递复杂类型。

也就是说,按值传递复杂类型的好地方是无论如何都需要函数内部的对象副本。在这种情况下,您有两个选择:

  • 将参数作为 const 引用传递并在函数内创建本地副本

  • 按值传递参数(编译器创建本地副本)。

第二种选择通常更有效。例如,请参阅copy&swap idiom

于 2012-11-08T10:27:31.067 回答