cpp规定了this是右值,使用&是无法获取this指针的地址的,&需要左值才行。
this->:this是个指针,所以通过->可以访问对象的成员函数或是方法
*this:表示解引用,获取了当前这个对象!
this虽然用在类的内部,但是只有在对象被创建以后才会给 this 赋值,并且这个赋值的过程是编译器自动完成的,不需要用户干预,用户也不能显式地给 this 赋值
class Entity{
public:
Entity(int x ,int y){
//x = x; //这个时候形参和成员变量同名了,这就很难受了
this->x = x;
this->y = y;
}
public:
void print(){
//std::cout<<this->x<<" "<<this->y<<std::endl
std::cout<<x<<" "<<y<<std::endl;
}
private:
int x;
int y;
};
int main(){
Entity e(1,2);
e.func1(); //调用时,其实是这样的e.func1(&e),e被赋值给了this指针
}
return *this返回当前对象的本身或者克隆(返回类型为A,则是克隆,为&A,则是本身,也就是引用)。
return this返回当前对象的地址(指向当前对象的指针)
...