C/C++編程筆記:C++中的“ this”指針,應(yīng)該如何使用?

要了解“this”指針,重要的是要了解對(duì)象如何看待類的函數(shù)和數(shù)據(jù)成員。
每個(gè)對(duì)象都有自己的數(shù)據(jù)成員副本。
全部訪問與代碼段中存在的功能定義相同的功能。
意味著每個(gè)對(duì)象都有自己的數(shù)據(jù)成員副本,并且所有對(duì)象共享成員函數(shù)的單個(gè)副本。
現(xiàn)在的問題是,如果每個(gè)成員函數(shù)只有一個(gè)副本并且被多個(gè)對(duì)象使用,那么如何訪問和更新適當(dāng)?shù)臄?shù)據(jù)成員?

編譯器提供隱式指針以及函數(shù)名稱作為“ this”。
“ this”指針作為隱藏參數(shù)傳遞給所有非靜態(tài)成員函數(shù)調(diào)用,并且可用作所有非靜態(tài)函數(shù)主體內(nèi)的局部變量?!?this”指針在靜態(tài)成員函數(shù)中不可用,因?yàn)榭梢栽跊]有任何對(duì)象(帶有類名)的情況下調(diào)用靜態(tài)成員函數(shù)。
對(duì)于X類,?this指針的類型為'X *'。另外,如果X的成員函數(shù)聲明為const,則此指針的類型為'const X *'
在早期的C ++版本中,“ this”指針將被更改。通過這樣做,程序員可以更改方法正在處理的對(duì)象。該功能最終被刪除,現(xiàn)在在C ++中為r值。
C ++通過調(diào)用以下代碼讓對(duì)象銷毀自身:
delete this;
正如Stroustrup所說的,“ this”可能是指針的引用,但是在C ++的早期版本中沒有引用。如果將“ this”實(shí)現(xiàn)為參考,則可以避免上述問題,并且比指針更安全。
以下是使用“ this”指針的情況:
1)當(dāng)局部變量的名稱與成員的名稱相同時(shí)

輸出:
x = 20
對(duì)于構(gòu)造函數(shù),當(dāng)參數(shù)名稱與成員名稱相同時(shí),也可以使用?initializer list?。
2)返回對(duì)調(diào)用對(duì)象的引用

當(dāng)返回對(duì)本地對(duì)象的引用時(shí),返回的引用可用于鏈接單個(gè)對(duì)象上的函數(shù)調(diào)用。

輸出:
x = 10 y = 20
練習(xí):(習(xí)題)
預(yù)測(cè)以下程序的輸出。如果存在編譯錯(cuò)誤,請(qǐng)修復(fù)它們。
問題一:

問題二:

問題三:

問題四:

以上幾個(gè)題目,大家有興趣的小伙伴可以自己去編譯器試試。
每天學(xué)點(diǎn)小知識(shí),希望對(duì)你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
