#include <iostream>
int & f();
using namespace std;
int m = 0;
//f()返回一个引用
int & f()
{
return m;
}
int main()
{
int a = 1;
cout<<m<<" "<<a<<endl;
f() = a;
m = 3;
a = 4;
cout<<m<<" "<<a<<endl;
getchar();
return 0;
}
/*********************************************/
输出:
0 1
3 4
/*********************************************/
f()返回的是m的引用,但是f() = a;之后,a和m指向不同的内存。
看到网上有人说这样赋值a,m将指向同一块内存,特纠正一下。
我的感觉是引用只在定义的时候才可以绑定,否则跟普通赋值效果一样。
比如上面程序中如果添上这么一句:a = f();a和m仍指向不同的内存。
但是int & b = f();b和m就代表同一块内存了。