capypad
0 Tage Serie
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
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