C ++编写函数时:在函数中初始化返回值或将其作为引用传递是否更好?

时间:2016-08-17 17:46:04

标签: c++ performance memory garbage-collection

编辑:这个问题被标记为重复,我可以理解为什么,但我搜索和搜索,我找不到另一个问题,所以希望这可以用作其他问题答案的漏斗。另一个问题还没有最好的答案。

我对C ++没有多少经验,但我总是想知道以下内容,找不到任何可以解释哪个方面更好的方法:

第一种方式:编写函数时,最好这样做:

int value = Calculation(x, y); 

int Calculation(int x, int y)
{
    int value = x + y;
    // Some More calculation involving value
    return value;
}

第二道。或者做得更好:

int value = 0;
Calculation(value, x, y);  

void Calculation(int& value, int x, int y)
{
    value = x + y;
    // Some More calculation involving value
}

根据我在其他编程语言中的经验,编写带参数并返回结果的函数总是很好的做法,但我总是觉得这样做,我总是在函数内声明一个额外的变量(返回变量)和每次调用该函数都需要垃圾收集器的额外工作。我可能错了,但这就是我目前的想法。

第二种方式,我只需要声明一次值,但我通过引用传递它,这意味着每次在函数中使用变量时我都会为编译器提供额外的工作,因为它必须每次指向它。

所以在摘要中,我的猜测是第一种方式是工作较少,但在内存中添加了一个额外的变量。第二种方式是减少内存工作,但每次在函数中使用它时都需要额外的工作来查找变量。

最后我的问题,我应该始终坚持第一种方式吗?

非常感谢!

0 个答案:

没有答案