Freigeben über


Klassenmember

Klassen können diese Arten von Membern aufweisen:

Hinweise

Die Memberliste einer Klasse kann mithilfe von Schlüsselwörtern, die als Zugriffsspezifizierer bekannt sind, in private-, protected- und public-Abschnitte unterteilt werden. Ein Doppelpunkt : muss dem Zugriffsspezifizierer folgen. Diese Abschnitte müssen nicht fortlaufend sein, d. h. sämtliche dieser Schlüsselwörter können möglicherweise mehrmals in der Memberliste vorkommen. Das Schlüsselwort legt den Zugriff aller Member bis zum nächsten Zugriffsspezifizierer oder zur schließenden Klammer fest.

Memberdeklarationen in der Memberliste werden durch Semikolons ; getrennt. Weitere Informationen erhalten Sie unter Class-Member-Deklarationssyntax.

Der Zweck der Memberliste ist:

  • Deklarieren des vollständigen Satzes von Membern für eine bestimmte Klasse

  • Spezifizieren des Zugriffs (öffentlich, privat oder geschützt), der verschiedenen Klassenmembern zugeordnet ist

In der Deklaration einer Memberliste können Sie Member nur einmal deklarieren. Eine Neudeklaration von Membern erzeugt eine Fehlermeldung. Da die Memberliste ein vollständiger Satz der Member ist, können Sie einer gegebenen Klasse mit nachfolgenden Klassendeklarationen keine Member hinzufügen.

Memberdeklaratoren können keine Initialisierer enthalten. Die Bereitstellung eines Initialisierers erzeugt eine Fehlermeldung, wie im folgenden Code gezeigt:

// class_members1.cpp
// C2864 expected
class CantInit
{
public:
    long l = 7;       // Error: attempt to initialize
                      //  class member.
    static int i = 9; // Error: must be defined and initialized
                      // outside of class declaration.
};
int main()
{
}

Da eine separate Instanz von nicht statischen Memberdaten für jedes Objekt eines gegebenen Klassentyps erstellt wird, ist die richtige Vorgehensweise zum Initialisieren von Memberdaten die Verwendung des Klassenkonstruktors. (Konstruktoren werden unter Konstruktoren behandelt.)

Es ist nur eine gemeinsame Kopie der statischen Datenmember für alle Objekte eines gegebenen Klassentyps vorhanden. Statische Datenmember müssen definiert werden und können im Dateigültigkeitsbereich initialisiert werden. (Weitere Informationen zu statischen Datenmembern finden Sie unter Statische Datenmember). Das folgende Beispiel veranschaulicht, wie diese Initialisierungen vorgenommen werden:

// class_members2.cpp
class CanInit
{
public:
    CanInit() { l = 7; } // Initializes l when new objects of type 
                         //  CanInit are created.
    long       l;
    static int i;
    static int j;
};

// i is defined at file scope and initialized to 15.
// The initializer is evaluated in the scope of CanInit.
int CanInit::i = 15;                                                       

// The right side of the initializer is in the scope 
// of the object being initialized
int CanInit::j = i;  

int main()
{
}

Hinweis

Dem Klassennamen CanInit muss i vorausgehen, um anzugeben, dass das definierte i ein Member der Klasse CanInit ist.

Microsoft-spezifisch

Mit Microsoft C++ können "static"-, "const integral"- und "const enum"-Datenmember in der Klassendefinition initialisiert werden. Weitere Informationen erhalten Sie unter Microsoft-Erweiterungen für C und C++.

Siehe auch

Referenz

Klassen, Strukturen und Unions