Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Statische Memberfunktionen Klassengültigkeitsbereich, betrachtet werden.Im Gegensatz zu nicht statische Memberfunktionen haben diese Funktionen kein implizites dies-Argument. Daher können sie nur statische Datenmember, Enumeratoren oder geschachtelte Typen direkt verwenden.Statische Memberfunktionen zugegriffen werden kann, ohne dass ein Objekt des entsprechenden Klassentyps verwendet werden soll.Betrachten Sie das folgende Beispiel:
Beispiel
// 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());
}
Kommentare
Im vorherigen Code enthält die Klasse StaticTest die statische Memberfunktion count.Diese Funktion gibt zurück, den Wert des privaten Klassenmembers jedoch nicht notwendigerweise mit einem angegebenen Objekt vom Typ StaticTestzugeordnet.
Statische Memberfunktionen haben externe Bindung.Diese Funktionen sind nicht diesen Zeiger.Daher gelten folgende Einschränkungen für solche Funktionen:
Sie können einen nicht statischen Klassenmember Daten nicht mit der Member Auswahl Operatoren zugreifen (. oder – >).
Sie können nicht als virtuelldeklariert werden.
Sie können nicht den gleichen Namen wie eine nicht statische Funktion haben, die dieselben Argumenttypen aufweist.
HinweisDie linke Seite eines Operators (. ausgewählten Member oder – >), das eine static-Memberfunktion auswählt, wird nicht ausgewertet.Dies kann wichtig sein, wenn das Feature für die Nebeneffekte verwendet wird.Beispielsweise ruft der Ausdruck SideEffects().CountOf() die Funktion nicht SideEffectsan.