&在c++中有两个用法,
第一 做取地址运算符。
第二 做引用。
-
引用通俗来说就是一个变量的别名。
int val=3;
int &yin = val; //这时候yin 就是 val的一个引用, 且注意引用定义必须要直接初始化
cout <<"Value"<< yin <<"对比"<<val<<endl; //他们值完全相同
cout << "Address"<<yin <<"对比"<<val<<endl;//他们地址完全相同
2. 将引用做函数参数时,对实参的要求必须是变量,不可以是表达式
例如
double cube(double &a){
a = a*a;
return a;
}
cout << cube(x + 2.0)<<endl;//不对的,不能是表达式
3. double refcube(const double &ra){
return ra*ra*ra;
}
int main(){
double side = 2.0;
long edge = 5L;
double c4 = refcube(edge);
double c5 = refcube(7.0);
double c6 = refcube(side + 10.0);
//虽然形参与实参类型不同。但是因为形参是const double &ra 系统会产生临时变量,来存储。
double && c7 = side + 3.0; //这是c++11新增的另一种引用,可以引用右值
cout << c4 << endl;
cout << c5 << endl;
cout << c6 << endl;
cout << c7 << endl;
system("pause");
return 0;
}
注意:引用参数应尽可能的声明为const 。
好处:1.可以避免无意中修改数据。当然要求必须修改实参的例外
2.函数能够处理const 和非const 的实参。
3.const 引用可以处理不同类型的形参,并使用临时变量(字面常量 7.0,表达式 x+3.0)。