capypad
0 Tage Serie
cpp / beginner
Snippet

Statische Klassenmember

Statische Member gehören zur Klasse selbst und nicht zu einem einzelnen Objekt. Alle Objekte der Klasse teilen sich dieselbe statische Variable. Wenn ein neues Objekt erstellt wird, erhöht der Konstruktor den Zähler. Statische Funktionen können auf statische Member zugreifen, ohne ein Objekt zu benötigen. Verwende Counter::count, um direkt auf die geteilte Variable zuzugreifen, oder Counter::getCount() für die statische Methode. Dieses Muster ist nützlich um zu verfolgen, wie viele Objekte einer Klasse erstellt wurden.

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
#include <iostream>
 
class Counter {
public:
static int count;
Counter() {
count++;
}
static int getCount() {
return count;
}
};
 
int Counter::count = 0;
 
 
int main() {
Counter c1;
Counter c2;
Counter c3;
std::cout << "Objects created: " << Counter::getCount() << std::endl;
return 0;
}
Erklärung
1
static int count;
Deklariert eine statische Member-Variable, die von allen Instanzen geteilt wird
2
Counter() { count++; }
Konstruktor erhöht count jedes Mal wenn ein Objekt erstellt wird
3
static int getCount() { ... }
Statische Funktion, die den geteilten Zählerwert zurückgibt
4
int Counter::count = 0;
Definition und Initialisierung des statischen Members außerhalb der Klasse
5
Counter::getCount()
Aufruf der statischen Methode über Klassennamen statt Objekt