如果一个函数只需要查看一个参数的值,你不应该总是通过常量引用传递那个参数吗?
我的一位同事表示,对于小类型来说没关系,但我不同意。
那么这样做有什么好处:
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;
}
但我不知道是否总是这样。
我相信我是对的,因为它不会产生任何额外的开销并且它是自我记录的。
但是,我想问问社区我的推理和假设是否正确?