C ++,哪个参数样式更好,是通过复制还是通过const引用?

时间:2013-12-01 10:45:25

标签: c++ parameters reference copy constants

我想知道在我的C ++库中使用哪种最佳样式来管理仅输入的函数参数:

void f(int a)
{
   // ...
}
void f(const int& a)
{
   // ...
}

我知道当我想传递类或结构的参数时,我应该使用第二个,但小值是什么?

3 个答案:

答案 0 :(得分:2)

当你对复制价格便宜的结构使用Pass by值时,还有一个额外的好处,即编译器可能认为对象不是别名,即它们不是同一个对象。但是当你使用pass-by-reference时,编译器不能总是假设它。

您可以查看 Want Speed? Pass by Value. How to pass objects to functions in C++?

答案 1 :(得分:1)

首先是语义学。

如果您需要修改值,包括从中窃取,或需要值的快照,请复制它。

在任何其他情况下,使用const&就可以了。

至于优化?首先测量。

答案 2 :(得分:0)

如果价值较小,则取决于个人喜好。重要的是统一参数样式。