reference 底层实现是指针,refrence 必须有初值且不能重新代表其它值。
int x = 0;
int* p = &x;
int& r = x; // r 代表 x。r , x 都是0
int x2 = 5;
r = x2; // r 不能重新代表其他物体。
int& r2 = r;
注意:1. sizeof(r) == sizeof(x)
2. &x = &r;
object 和其 reference 的大小相同(全都是假象)
java里面全部变量都是reference
reference 通常不用于声明变量,而用于函数参数类型和返回类型。
void func1(Cls* pobj){pobj->xxx();}
void func2(Cls obj){obj.xxx();}
void func3(Cls& obj){obj.xxx();}
...
Cls obj;
func1(&obj);
func2(obj);
func3(obj); //传引用接口很好 效率较高