为什么用引用得先看他和传统返回机制相比有什么优势;
先看传统引用,传统引用类似于按值传递函数参数,即先计算return中的返回表达式,然后将表示式的赋值给一个临时变量,而调用函数的地方会得到这个临时变量,并进行计算;
#include<iostream>
using namespace std;
int square(int x,int y){
return x*y;
}
int main(){
int a,b,c; cin>>a>>b;
c=square(a,b);
}
这里的话,当计算完x*y后,系统会自动将其值赋值给一个无名临时变量,姑且我们叫它m,然后c=m;
但是如果是这样的话:
#include<iostream>
using namespace std;
int& square(int x,int y,int &z){
z=x*y;
return z;
}
int main(){
int a,b,c,d; cin>>a>>b;
cout<<(c=square(a,b,d));
}
这里返回是是d的引用,这里就不需要赋值给临时变量了,所以我们可以节省大量时间【返回的类型越复杂,节约的时间越多】
另外,如果你返回了引用类型,但不想对返回的值进行修改,那么可以试着返回const引用值,这样的话返回的值不可以作为左值,只能为右值;