Widzimy zadeklarowaną zmienną statyczną w funkcji podajStatyczna(). Wartość zero jest jej przypisywana tylko raz podczas pierwszego wywołania funkcji. W przeciwieństwie do zwykłej zmiennej, zmienna statyczna nie jest niszczona po wyjściu programu z bloku gdzie została zadeklarowana (w przykładzie wyżej jest to blok funkcji), dzięki temu pamięta swoją wartość pomiędzy wywołaniami funkcji.
Zmienna zadeklarowania w bloku metody w klasie niczym się nie różni od tej zadeklarowanej w bloku funkcji (metoda jest funkcją). Jest wspólna dla wszystkich obiektów klasy, w której zadeklarowana jest dana metoda.
Zmienna statyczna w bloku klasy Zmienna statyczna zadeklarowana w bloku klasy jest jedyną wspólną instancją dla wszystkich obiektów danej klasy. Jest tworzona już na początku działania programu. Przykład w C++:
#include <iostream> using namespace std;
class MojaKlasa { public: static int x; MojaKlasa() { x++; } // konstruktor - zwiększa „x” ~MojaKlasa() { x--; } // destruktor - zmniejsza „x”
int MojaKlasa::x = 0; // definicja i zainicjowanie zmiennej statycznej „x”
int main() { MojaKlasa obiekt1; cout << obiekt1.x << endl; //wyświetli 1
MojaKlasa obiekt2; cout << obiekt2.x << endl; //wyświetli 2
cout << MojaKlasa::x << endl;