Posted on 2009-10-15 08:13
lantionzy 閱讀(1888)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
C++ Primer
類(lèi)的成員函數(shù)具有一個(gè)附加的隱含形參,即指向該類(lèi)對(duì)象的一個(gè)指針。這個(gè)隱含形參命名為 this,與調(diào)用成員函數(shù)的對(duì)象綁定在一起。成員函數(shù)不能定義 this 形參,而是由編譯器隱含地定義。成員函數(shù)的函數(shù)體可以顯式使用 this 指針,但不是必須這么做。如果對(duì)類(lèi)成員的引用沒(méi)有限定,編譯器會(huì)將這種引用處理成通過(guò) this 指針的引用。
盡管在成員函數(shù)內(nèi)部顯式引用 this 通常是不必要的,但有一種情況下必須這樣做:當(dāng)我們需要將一個(gè)對(duì)象作為整體引用而不是引用對(duì)象的一個(gè)成員時(shí)。最常見(jiàn)的情況是在這樣的函數(shù)中使用 this:該函數(shù)返回對(duì)調(diào)用該函數(shù)的對(duì)象的引用。
在普通的非 const 成員函數(shù)中,this 的類(lèi)型是一個(gè)指向類(lèi)類(lèi)型的 const 指針,可以改變 this 所指向的值,但不能改變 this 所保存的地址。在 const 成員函數(shù)中,this 的類(lèi)型是一個(gè)指向 const 類(lèi)類(lèi)型對(duì)象的 const 指針。既不能改變 this 所指向的對(duì)象,也不能改變 this 所保存的地址。 不能從 const 成員函數(shù)返回指向類(lèi)對(duì)象的普通引用。const 成員函數(shù)只能返回 *this 作為一個(gè) const 引用。