参考博客:https://www.cnblogs.com/zhengfa-af/p/8082959.html
在 访问对象的非静态成员时会隐式传递一个参数,即对象本身的指针,这个指针名为this。
例如:
class A
{int a=1;public:A(){}void GetA(int a){cout<<this->a<<endl;}
};int main()
{A tmp;tmp.GetA(5);
}
上面tmp.GetA()
相当于tmp.GetA(&tmp,5)
,而方法的声明相当于void GetA(A* const this,int a)
,通过this指针我们就能在这个对象方法内部访问到对象的其他成员。
需要注意的是静态成员没有this指针。(显然,因为他们不属于对象成员)
this指针的传递效率比一般的传递参数要高。
this指针的必要性还体现在,成员函数其实只有一份,这样我们用不同的对象访问到这个成员函数的时候,如果要访问对象的其他成员,也可以知道是哪一个对象的成员。(访问成员的时候会自动在前面加上this指针)