是否值得通过引用传递"简单"类型的值?

Mac*_*iek 2 c++

考虑以下 :

int increment1 (const int & x)
{ return x+1; }

int increment2 (const int x)
{ return x+1; }
Run Code Online (Sandbox Code Playgroud)

我理解传递对类对象的引用,但是我想知道是否值得将引用传递给简单类型?哪个更优化?通过引用传递或通过值传递(在simle类型的情况下?)

Meh*_*ari 6

除非您需要"按引用调用"语义,即您希望访问被调用者中的实际变量,否则不应对简单类型使用引用调用.

对于类似的,更一般的讨论,请参阅:"const T&arg"与"T arg"


unw*_*ind 6

你也了解过早优化吗?:)

做最清楚的事.如果该函数将返回该值,则不需要引用.然后,代码的(人类!)读者可能会想知道为什么使用引用,没有充分的理由.

更新:如果你想要调用函数increment(),那(对我来说)暗示它应该改变传入的值,而不是返回它.这听起来像是一种修改到位的操作.然后使用引用(或指针)可能有意义,并删除返回值:

void increment(int &value)
{
  ++value;
}
Run Code Online (Sandbox Code Playgroud)

如果你正在调查什么是最快的,我仍然认为你过早地进行了优化.