static c
Bedeutung und Verwendung von Static in C ++ mit Beispielen.
In unseren vorherigen Themen zu Speicherklassen wurde uns das Wort statisch vorgestellt. Wir haben etwas über statische Variablen gelernt, die in einem C ++ - Programm deklariert sind. Wir wissen, dass statische Variablen nur einmal initialisiert werden und den Wert im gesamten Programm beibehalten.
Ähnlich wie bei den statischen Variablen erweitern wir in diesem Lernprogramm die Verwendung eines statischen Schlüsselworts auf:
- Statische Elementvariablen in einer Klasse
- Statische Klassenobjekte
- Klasse für statische Methoden
=> Lesen Sie hier die ausführlichen C ++ - Schulungsanleitungen.
Was du lernen wirst:
- Statische Elementvariablen in einer Klasse
- Statische Klassenobjekte
- Statische Methoden in einer Klasse
- Zweck statischer Funktionen
- Fazit
- Literatur-Empfehlungen
Statische Elementvariablen in einer Klasse
Eine statische Variable wird niemals einem Stapel zugewiesen. Ihnen wird Speicherplatz auf verschiedenen statischen Speichern zugewiesen. Dies bedeutet, dass beim Deklarieren einer statischen Variablen in einer Klasse diese Variable von allen Objekten dieser Klasse gemeinsam genutzt wird.
Da statische Variablen nur einmal initialisiert werden und von allen Objekten einer Klasse gemeinsam genutzt werden, werden die statischen Variablen niemals von einem Konstruktor initialisiert. Stattdessen sollte die statische Variable außerhalb der Klasse nur einmal explizit mit dem Bereichsauflösungsoperator (: :) initialisiert werden.
Wenn das erste Objekt erstellt wird, werden alle statischen Daten des primitiven Typs auf Null initialisiert, wenn keine andere Initialisierung vorhanden ist.
Überprüfen Sie das folgende Beispiel, das die statische Variable in einer Klasse demonstriert.
Wie im folgenden Code gezeigt, haben wir die Anzahl der statischen Variablen als Mitglied des Klassenbeispiels. Beachten Sie, dass wir diese Variable explizit außerhalb der Klasse mit dem Anfangswert = 0 initialisiert haben.
Dann erhöhen wir diese statische Variable im Konstruktor der Klasse.
Schauen wir uns ein Beispielprogramm an.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Ausgabe:
Anzahl = 0
Anzahl = 1
Anzahl = 2
In der Hauptfunktion erstellen wir drei verschiedene Objekte. In der Ausgabe sehen wir, dass der Wert der statischen Variablen zwischen den Objekterstellungen beibehalten und nicht bei jeder Objekterstellung zurückgesetzt wird. Dies ist für das erste Objekt count = 0. Dann wird es auf 1 erhöht. Für das nächste Objekt ist count = 1 und so weiter.
Wenn die Zählung eine gewöhnliche Variable wäre, wäre die Ausgabe gewesen:
So erhalten Sie einen Netzwerksicherheitsschlüssel für WLAN
Anzahl = 0
Anzahl = 0
Anzahl = 0
Statische Klassenobjekte
Genau wie statische Elementvariablen der Klasse können wir Klassenobjekte als statisch deklarieren. Statische Klassenobjekte werden ebenfalls nur einmal initialisiert und bleiben während des gesamten Programms aktiv. Da es sich bei dem Objekt um einen benutzerdefinierten Typ handelt, wird ein statisches Klassenobjekt ähnlich wie bei normalen Objekten mithilfe eines Konstruktors initialisiert.
Nehmen wir ein Programmierbeispiel, um statische Klassenobjekte besser zu verstehen.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<In diesem Programm haben wir eine Klasse xyz mit einem Konstruktor und einem Destruktor. In der Hauptfunktion deklarieren wir eine Variable x = 0; Wenn x gleich Null ist, erstellen wir ein statisches Objekt der Klasse xyz.
Das Programm gibt die folgende Ausgabe aus.
Ausgabe:
Konstruktor :: xyz
Ende Main
Destruktor :: xyz
Normalerweise sollte die Ausgabe gewesen sein
Konstruktor :: xyz
Destruktor :: xyz
Ende Main
Wenn wir jedoch ein statisches Objekt erstellen, hat dieses Objekt einen Bereich bis zum Ende des Programms und nicht, wenn das Objekt den Bereich verlässt (Ende der if-Anweisung). Dies ist der Grund, aus dem der Destruktor für das Objekt obj erst ausgeführt wird, nachdem das Ende der Hauptfunktion erreicht ist.
Statische Methoden in einer Klasse
Wir können auch statische Methoden in einer Klasse haben. Genau wie statische Objekte und statische Elementvariablen haben auch statische Elementfunktionen einen Gültigkeitsbereich, bis die Programmausführung endet.
Wenn eine Klassenmethode als statisch deklariert wird, kann sie nur auf statische Elemente zugreifen, d. H. Auf statische Variablen und statische Funktionen der Klasse. Es kann nicht auf normale Mitglieder der Klasse zugreifen.
Außerdem ist für statische Klassenmethoden kein 'this' -Zeiger verfügbar.
Wir dürfen das Objekt und den Punktoperator verwenden, um auf die statischen Methoden einer Klasse zuzugreifen. Es wird jedoch empfohlen, den Klassennamen und den Bereichsauflösungsoperator zu verwenden, um auf diese Methoden zuzugreifen.
Unten finden Sie ein Beispiel für die Verwendung einer statischen Methode in einer Klasse.
In diesem Beispiel haben wir zwei statische Elementvariablen A und B sowie eine statische Methode printValues definiert. Die Variablen A und B werden auf die Werte 10 bzw. 20 initialisiert. Bei der statischen Methode printValues werden die Werte von A und B nach Inkrementierung bzw. vor Inkrementierung durchlaufen. Danach werden die Werte gedruckt.
In der Hauptmethode rufen wir die statische Methode printValues direkt unter Verwendung des Klassennamens auf, da wir kein Objekt zum Aufrufen der statischen Funktionen benötigen.
#include using namespace std; class Sample { static int A; static int B; public: static void printValues(){ A++; ++B; cout <<'Value of A: ' << A << endl; cout <<'Value of B: ' << B << endl; } }; int Sample :: A =10; int Sample :: B =20; int main(){ Sample::printValues(); return 0; }
Ausgabe:
Wert von A: 11
Wert von B: 21
Der Screenshot derselben Ausgabe ist unten angegeben.

In der Ausgabe sehen wir also, dass die Werte der beiden statischen Variablen gemäß den an ihnen ausgeführten Operationen geändert werden.
Zweck statischer Funktionen
Nachdem Sie in diesem Lernprogramm die verschiedenen Verwendungszwecke des Schlüsselworts static gesehen haben, bleibt die Frage offen, welchen Zweck statische Funktionen haben.
Der Zweck statischer Funktionen kann wie folgt zusammengefasst werden:
- Wir verwenden statische Funktionen, wenn diese Funktion nicht vom Objekt zum Aufrufen und Arbeiten abhängt.
- Ein weiterer Zweck der Verwendung der statischen Funktion besteht darin, ihre Verwendung einzuschränken. Im Gegensatz zu globalen Funktionen ist der Zugriff auf statische Funktionen auf die Datei beschränkt, in der sie abgelegt sind. Um den Zugriff auf Funktionen zu beschränken, machen wir sie statisch.
- Abgesehen von den beiden oben genannten Gründen verwenden wir statische Funktionen, wenn wir kein Objekt einer Klasse erstellen möchten, nur um eine Funktion auszuführen, die sich nicht auf Klassenmitglieder bezieht.
Fazit
Zum Abschluss dieses Themas können wir sagen, dass das statische Schlüsselwort in C ++ auf verschiedene Arten verwendet werden kann, um Variablen, Mitgliedsvariablen, Klassenobjekte, Methoden usw. zu deklarieren.
Auf statische Elementfunktionen und -variablen muss nicht mit dem Objekt zugegriffen werden, sondern sie können direkt über den Klassennamen aufgerufen werden. Außerdem bleibt der Umfang statischer Entitäten während der Ausführung des Programms erhalten. Daher kann das statische Schlüsselwort auch verwendet werden, um den Zugriff einer bestimmten Entität zu steuern.
In unseren kommenden Tutorials erfahren Sie mehr über verschiedene andere OOP-Themen in C ++.
=> Hier finden Sie A-Z der C ++ - Schulungsanleitungen.
Literatur-Empfehlungen
- Verspotten privater, statischer und nichtiger Methoden mit Mockito
- Statisches Testen und dynamisches Testen - Unterschied zwischen diesen beiden wichtigen Testtechniken
- TOP 40 Tools zur Analyse statischer Codes (beste Tools zur Analyse von Quellcodes)
- Beste KOSTENLOSE C # Tutorial-Serie: Der ultimative C # Leitfaden für Anfänger
- Parametrisierung statischer Werte in LoadRunner
- Python-Variablen
- Arten der Vererbung in C ++
- Variablen in C ++