Statyczne funkcje członkowskie
Funkcji statycznych elementów członkowskich jest uznawany za zakres klasy.W odróżnieniu od funkcji niestatycznego członka niejawne nie ma tych funkcji to argumentu; w związku z tym może użyć danych statycznych elementów członkowskich, numeratorów lub zagnieżdżonych typów bezpośrednio.Funkcji statycznych elementów członkowskich są dostępne bez użycia obiektu danego typu klasy.Rozważmy następujący przykład:
Przykład
// 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
}
Komentarze
W poprzednim kodzie klasy StaticTest zawiera funkcję członka statycznego count.Ta funkcja zwraca wartość elementu członkowskiego prywatnych klasy, ale nie jest musi być skojarzony z danym obiektem typu StaticTest.
Funkcje statycznych elementów członkowskich mają powiązania zewnętrznego.Te funkcje nie są to wskaźniki.W związku z tym następujące ograniczenia dotyczą takie funkcje:
Nie można uzyskać dostęp do danych elementu członkowskiego niestatycznego klasy przy użyciu operatorów wybranych elementów członkowskich (. lub –>).
Nie można zadeklarować jako wirtualnego.
Nie mogą jednak mieć taką samą nazwę jak niestatycznego funkcję, która ma ten sam typ argumentu.
[!UWAGA]
Z lewej strony operatora wybranych elementów członkowskich (. lub –>) czy wybiera funkcja statycznych elementów członkowskich nie jest obliczone.Może to być ważna, jeśli funkcja jest używana do jej efekty uboczne.Na przykład, wyrażenie SideEffects().CountOf() nie wywołaniu funkcji SideEffects.