參考博客: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指針)