性能:参考与值作为函数参数

1' *_* -- 2 c c++ variables parameters reference

我有一个函数,我需要传递一个值只用于只读目的.

例如:

unsigned short strlen(String str)
{
  short i = 0;
  while(str[i] != '\0')
    i++;
  return i;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我不想更改我使用的原始值,我只需要读取它的长度.它是否 - 在性能方面 - 更好地替换参数String str,即通过类似的参考来制作原始变量的副本String &str

And*_*owl 5

它是否 - 在性能方面 - 更好地替换参数String str,它是一个像String&str这样的引用来制作原始变量的副本?

是的,它会的.而不是创建一个您似乎不需要的副本,而是绑定引用.由于您没有修改对象,因此引用const会更好:

unsigned short strlen(String const& str)
//                           ^^^^^^
Run Code Online (Sandbox Code Playgroud)