cpp / beginner
Snippet
Statische Mitglieder: Daten über Objekte teilen
Statische Mitglieder gehören zur Klasse selbst, nicht zu einzelnen Objekten. Das bedeutet, alle Objekte teilen dieselbe Variable. In diesem Beispiel verfolgt totalObjects, wie viele Counter-Objekte erstellt wurden - es erhöht sich jedes Mal, wenn ein neuer Counter erstellt wird. Sie können auf statische Mitglieder mit ClassName::member zugreifen, ohne Objekte zu erstellen.
snippet.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>#include <string>using namespace std;class Counter {public:static int totalObjects;string name;Counter(string n) {name = n;totalObjects++;}void showCount() {cout << name << " created. Total: " << totalObjects << endl;}};int Counter::totalObjects = 0;int main() {Counter a("Object A");Counter b("Object B");Counter c("Object C");a.showCount();b.showCount();cout << "All objects created: " << Counter::totalObjects << endl;return 0;}
Erklärung
1
static int totalObjects;
Deklaration eines statischen Members - geteilt über alle Instanzen
2
int Counter::totalObjects = 0;
Definition außerhalb der Klasse - muss einmal global definiert werden
3
totalObjects++;
Erhöht den geteilten Zähler jedes Mal, wenn der Konstruktor läuft
4
Counter::totalObjects
Zugriff auf statisches Member über Klassennamen, kein Objekt nötig