共用方式為


靜態成員函式

靜態成員函式被視為具有類別範圍。 相對於非靜態成員函式,這些函式沒有隱含的 this 引數;因此,只能直接使用靜態資料成員、列舉程式或巢狀類型。 存取靜態成員函式可以不使用對應類別類型的物件。 請考量以下範例:

範例

// static_member_functions.cpp
#include <stdio.h>

class StaticTest
{
private:
    static int x;
public:
    static int count()
    {
        return x;
    }
};

int StaticTest::x = 9;

int main()
{
    printf_s("%d\n", StaticTest::count());  // 9
}

註解

在上述程式碼中,StaticTest 類別包含靜態成員函式 count。 這個函式會傳回私用類別成員的值,但是不一定與 StaticTest 類型的特定物件相關聯。

靜態成員函式具有外部連結。 這些函式沒有 this 指標。 因此,這類函式必須受到下列限制:

  • 這類函式無法使用成員選取運算子 (.–>) 存取非靜態類別成員資料。

  • 不可將這類函式宣告為 virtual

  • 這類函式不可與有相同引數類型的非靜態函式同名。

    注意事項注意事項

    不會評估成員選取運算子 (.–>) 的左側 (負責選取靜態成員函式)。如果要使用函式處理其副作用,這點可能相當重要。例如,運算式 SideEffects().CountOf() 不會呼叫 SideEffects 函式。

請參閱

參考

this 指標