引用作为函数返回值

#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

前面讲过不能返回局部变量的地址,引用本质是隐式的常量指针,所以也不能返回局部变量的引用;

上面的例子定义了全局变量,可不可以不定义全局变量呢?

results matching ""

    No results matching ""