War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

statische Datenmember (C++)

Klassen können statische Memberdaten und - Memberfunktionen enthalten. Wenn staticals ein Datenmember deklariert ist, wird nur eine Kopie der Daten für alle Objekte der Klasse verwaltet wird. (Weitere Informationen finden Sie unter Statische Memberfunktionen).

Statische Datenmember sind nicht Teil von Objekten eines angegebenen Klassentyps. sie sind separate Objekte. Daher gilt die Deklaration eines nicht statischen Datenmembers als eine Definition. Der Datenmember wird im Klassenbereich deklariert, aber nicht im Dateigültigkeitsbereich wurde ausgeführt. Diese statische Member verfügen über externe Bindung. Dies wird anhand des folgenden Beispiels veranschaulicht:

// static_data_members.cpp
class BufferedOutput
{
public:
   // Return number of bytes written by any object of this class.
   short BytesWritten()
   {
      return bytecount;
   }

   // Reset the counter.
   static void ResetCount()
   {
      bytecount = 0;
   }

   // Static member declaration.
   static long bytecount;
};

// Define bytecount in file scope.
long BufferedOutput::bytecount;

int main()
{
}

Im vorherigen Code ist der bytecount-Member in der Klasse BufferedOutputdeklariert, muss aber außerhalb der Klassendeklaration definiert sind.

Statische Datenmember können verwiesen werden, ohne dass ein Objekt des Klassentyps verwendet. Die Anzahl der Bytes, die mithilfe BufferedOutput-Objekte geschrieben wurde, kann abgerufen werden, wie nachfolgend veranschaulicht:

long nBytes = BufferedOutput::bytecount;

Damit der statische Member existiert, ist es nicht notwendig, dass alle Objekte des Klassentyps enthält. Statische Member können mithilfe der Member Auswahl (. und Operatoren) – >auch darauf zugegriffen werden. Zum Beispiel:

BufferedOutput Console;

long nBytes = Console.bytecount;

Im vorhergehenden Fall wird der Verweis auf das Objekt (Console) nicht ausgewertet. Der zurückgegebene Wert ist der Statischer Objekts bytecount.

Statische Datenmember unterliegen Klassenmember zugriffsregeln, sodass privater den Zugriff auf statische Datenmember nur für Klassenmember freunde und - Funktionen zulässig. Diese Regeln sind in Member-ACCESS-Steuerelementbeschrieben. Die Ausnahme besteht darin, dass statische Datenmember im Dateigültigkeitsbereich unabhängig von ihrer Zugriffsbeschränkungen definiert werden müssen. Wenn der Datenmember explizit initialisiert werden soll, muss einen Initialisierer mit der Definition bereitgestellt werden.

Der Typ eines statischen Members wird nicht durch den Klassennamen gekennzeichnet. Daher ist der Typ von BufferedOutput::bytecountlong.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft