C++中的this指標

彩神快三邀請碼是多少88886486發表於2021-02-14

this指標

一個類當中,有一個很隱蔽的特殊指標,它就是—this指標!

為什麼說它特殊?因為只要定義一個類,系統就會預定義個名字叫做this名且指向當前物件的指標。雖然我們看不到但卻可以使用它。

比如,我們來看一個時鐘類的一個成員函式,用來設定時間傳值的程式碼:

int Clock::SetTime(int h,int m,int s) { H = h; M = m; S = s; } 可以看到Clock類本身的成員變數為H、M、S,要用外部傳來的值給它們三個賦值,為了區別它們,我們把形參定義成小寫。那麼如果我們知道了this的存在,就可以這樣寫:

int Clock::SetTime(int h,int m,int s) { this->H = h; this->M = m; this->S = s; } //也可以寫成: int Clock::SetTime(int h,int m,int s) { (*this).H = h; (*this).M= m; (*this).S= s; }

可以看到,以上兩種寫法用到了物件中的隱藏的this指標,可以明確是本類中的成員,從而明顯的區別本物件與外部變數。

實際上,當一個物件呼叫其成員函式的時候,即便程式中有多個該類的物件,但成員函式的程式碼也僅有一份,所以為了區分它們是哪個物件呼叫的成員函式,編譯器也是轉化成this->成員函式這種形式來使用的。

相關文章