main(){
int tmp0 = 100;
int *tmp2 = &tmp0;
int& tmp1 = tmp0;
printf("%d\n%d\n%d\n%d\n",tmp0,tmp1,tmp2,&tmp1);
}
输出:
100
100
0x61fefc
0x61fefc
tmp1时对tmp0的引用,tmp0或tmp1变动的时候对方跟着变动;
当tmp1是对*tmp2的引用时,tmp1则表示的tmp2指向的数据,而不是tmp0;
class A{
public:
A get(){ //if returns A type,*this is copy of A
return *this;
}
int value = 100;
};
main(){
A a;
A c = a.get(); //C equals copy of a
printf("%d",c.value);
}
get()的返回类型为A时,对象为A type,返回*this,相当于返回A的克隆或本身;
(若返回类型为A, 则是克隆,且为临时变量。 若返回类型为A&, 则是本身 );
class A{
public:
A* get(){ //if returns A type,*this is copy of A
return this;
}
int value = 100;
};
main(){
A a;
A *c = a.get(); //c is ptr to a
printf("%d",c->value);
}
用this的时候返回a的地址。