复杂的类型使用引用,可以减少拷贝而提高性能;
如果不希望引用被修改则带上const标志。
但是对于简单类型,如果是处于性能原因而使用引用,
那肯定是弄巧成拙的。因为使用引用之后,多了一些额外的索引标志,
这些的带来的消耗在时间和空间上都比不用引用要多一些。
使用gcc -S x.cpp -o x.s得到下列的代码的汇编的大小
int add(int a, int b) {
return a + b;
}
963Bytes
int add(const int &a, const int &b) {
return a + b;
}
1047Bytes
int add(const int a, const int b) {
return a + b;
}
963Bytes
汇编的具体内容就不深入了。光看这个size就知道什么写法是比较靠谱的了。
对于基本类型不使用引用,还有一个原因,看以下代码
int a = fun1();
int b = a + 1;
fun2(b);
or
int a = fun1();
fun2(a + 1);
fun2(***)如果是使用引用参数的话就会报错,因为a + 1是一个表达式,不是一个变量。