靜態成員函式
靜態成員函式會被視為具有類別範圍。 相對於非靜態成員函式,這些函式具有不隱含這個數字。 因此,他們可以使用靜態資料成員、 列舉值或巢狀型別直接。 不需使用對應的類別型別的物件,就能存取靜態成員函式。 請考量以下範例:
範例
// 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());
}
註解
在上述程式碼類別中StaticTest包含靜態成員函式count。 這個函式會傳回私用類別成員的值,但不一定與指定的物件型別的StaticTest。
靜態成員函式有外部連結。 這些函式並沒有這個指標。 如此一來,這類函式來套用下列限制:
也不能存取非靜態類別成員資料使用的成員選取運算子 (. or –>).
不可以宣告為虛擬。
它們不能有相同的名稱,為非靜態函式具有相同的引數型別。
注意事項 成員選取運算子的左邊 (. 或 ->) 選取一個靜態成員函式並不進行評估。這是很重要如果函式用於其副作用。例如,運算式SideEffects().CountOf()不會呼叫此函式SideEffects。