引用作为函数返回值
#include <iostream>
using namespace std;
int sum;
int func1(int a, int b){
return a+b;
}
int& func2(int a, int b){
sum = a+b; //把a+b的结果赋值给了全局变量
return sum; //没有产生副本,返回了全局变量sum的一个引用
}
int main(int argc, const char * argv[]) {
int a =10,b =20;
int s;
s = func1(a,b);
/*实质函数内部a+b的值赋值给了临时变量,临时变量赋值给了s,
也就是我们看不到这个临时变量,但是它又是实际存在的
函数值传递是通过临时变量,这个临时变量又叫做副本,也就是说它是通过副本进行值传递的
*/
cout<<"func1:"<<s<<endl;
cout<<"func2:"<<func2(a, b)<<endl;
return 0;
}
func1:30
func230
前面讲过不能返回局部变量的地址,引用本质是隐式的常量指针,所以也不能返回局部变量的引用;
上面的例子定义了全局变量,可不可以不定义全局变量呢?