其中之一更快吗?
inline int ProcessByValue(int i)
{
// process i somehow
}
inline int ProcessByReference(const int& i)
{
// process i somehow
}
我知道整数类型应该按值传递。但是,我担心编译器可能会内联 ProcessByValue 以包含副本。有这方面的规则吗?
原文由 rlbond 发布,翻译遵循 CC BY-SA 4.0 许可协议
应根据对函数有意义的内容键入参数。
如果函数采用原始类型,则按值传递是有意义的。我认识的一些人会抱怨如果它被 const ref 通过(因为它是“不必要的”),但我认为我不会抱怨。如果函数采用用户定义的类型并且不修改参数,那么通过 const ref 传递将是有意义的。
如果它是用户定义的类型并且参数被修改,那么函数的语义将决定它应该如何传递。