如果一个函数需要对参数做的所有事情就是查看它的值,难道你不应该总是通过常量引用来传递该参数吗?
我的一个同事说小类型没关系,但我不同意。
那么这样做有什么好处吗:
void function(char const& ch){ //<- const ref
if (ch == 'a'){
DoSomething(ch);
}
return;
}
关于这个:
void function(char ch){ //<- value
if (ch == 'a'){
DoSomething(ch);
}
return;
}
它们在我看来大小相同:
#include <iostream>
#include <cstdlib>
int main(){
char ch;
char& chref = ch;
std::cout << sizeof(ch) << std::endl; //1
std::cout << sizeof(chref) << std::endl; //1
return EXIT_SUCCESS;
}
但我不知道是否总是这样。
我相信我是对的,因为它不会产生任何额外的开销,而且它是 self 记录的。
但是,我想问一下社区,我的推理和假设是否正确?
最佳答案
您的同事是对的。对于小型类型(char、int),当变量不被修改时,通过引用传递是没有意义的。按值传递会更好,因为指针的大小(在按引用传递的情况下使用)大约是小型类型的大小。
此外,按值传递的输入更少,可读性也稍好一些。
关于c++ - 参数传递礼仪 (C++) const 与 value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10256081/