引數對應和 this 指標
類別成員函式的處理方式不同,其取決於是否宣告為 static。 由於非靜態函式內含提供 this 指標的隱含引數,因此非靜態函式會被視為比靜態函式多一個引數,除此之外,它們的宣告是相同的。
這些非靜態成員函式要求隱含的 this 指標應與將呼叫之函式的物件類型相符,或者若是多載運算子,則它們要求第一個引數應與將套用之運算子的物件相符。(如需多載運算子的詳細資訊,請參閱多載運算子)。
不同於多載函式中的其他引數,其中沒有引入暫存物件,且在嘗試比對 this 指標引數時沒有嘗試進行轉換。
使用 – > 成員選取運算子存取成員函式時,this 指標引數具有一個 class-name * const 的類型。 如果成員宣告為 const 或 volatile,則類型分別會是 const class-name* const 和 volatile class-name * const。
. 成員選取運算子的工作方式完全相同,但有一點除外,就是其物件名稱前方會放置隱含的 & (傳址) 運算子。 下列範例顯示如何執行這項工作:
// Expression encountered in code
obj.name
// How the compiler treats it
(&obj)->name
–>* 和 .* (成員的指標) 運算子的左運算元處理方式,與具有相符引數的 . 和 –> (成員選取) 運算子相同。