c++中很多函数的参数都使用常引用,主要原因有两点
- 一个函数的参数为引用,则传参时不会调用拷贝构造函数(若参数为某个类),传入的参数还是实参本身,这样的开销小;
- 若传入的参数为引用,则函数内部对该参数的修改也会修改该实参本身,如果希望函数不对该参数进行修改,则可将其设置为常数const。
若某变量(不用const修饰的变量)作为常引用传入一个函数时,其仅在该函数内部是不可修改的,在函数外部仍然可以修改该变量的值。下面一个demo进行演示:
#include <stdio.h>
void foo(const int &i)
{
i = 2; // 报错,不能修改常引用
printf("%d\n", i);
}
int main()
{
int i = 1;
printf("%d\n", i);
foo(i);
i = 3;
printf("%d\n", i);
return 0;
}
将foo函数中i=2这一行注释后,程序输出
1
1
3
如有错误,请指正 😃