共用方式為


this 指標的類型

this 指標的類型可以在函式宣告中藉由 const 和 volatile 關鍵字修改。 若要將函式宣告為擁有一個或多個這些關鍵字的屬性,請在函式引數清單後面加入關鍵字。

請考量以下範例:

// type_of_this_pointer1.cpp
class Point
{
    unsigned X() const;
};
int main()
{
}

上述程式碼會宣告成員函式 X,其中 this 指標會視為 const 物件的 const 指標。 您可以使用 cv-mod-list 選項的組合,但是這些組合一定會修改 this 所指向的物件,而非 this 指標本身。 因此,下列宣告會宣告 X 函式,而 this 指標是 const 物件的 const 指標:

// type_of_this_pointer2.cpp
class Point
{
    unsigned X() const;
};
int main()
{
}

成員函式中 this 的類型會以下列語法描述,其中 cv-qualifier-list 是從成員函式宣告子判斷而來,而且可以是 constvolatile (或兩者皆是),class-type 則是類別的名稱:

[cv-qualifier-list] class-type * const this

換句話說,this 永遠是 const 指標,而且無法重新指派。成員函式宣告中使用的 const 或 volatile 限定詞適用於 this 於該函式範圍內所指向的類別執行個體。

下表將進一步說明這些修飾詞的運作方式。

修飾詞的語意

修飾詞

意義

const

無法變更成員資料,也無法叫用非 const 的成員函式。

volatile

每次存取成員時,就會從記憶體載入成員資料,而且會停用某些最佳化。

const 物件傳遞至非 const 的成員函式會發生錯誤。 同樣地,將 volatile 物件傳遞至非 volatile 的成員函式也會發生錯誤。

宣告為 const 的成員函式無法變更成員資料,在這類函式中,this 指標是 const 物件的指標。

注意事項注意事項

建構函式和解構函式不能宣告為 const 或 volatile。不過,它們可以在 const 或 volatile 物件上叫用。

請參閱

參考

this 指標