Статические переменные

В С++ различают локальные и глобальные переменные. Глобальные переменные статичны по определению. Но в C++ можно ввести и статическую локальную переменную. Статическа локальная переменная – это глобальная переменная, доступная только в пределах функции. Время жизни – от первого вызова функции до конца программы.

#include <iostream>
using namespace std;

int next(int start = 0) {
	static int k = start;
	return k++;
}

int main() {
    cout << next(5);
    cout << next(4);
    cout << next(3);
    cout << next(2);
    cout << next(1);
    return 0;
} // 56789

Статические поля класса

Статические поля класса – это глобальные переменные, определенные внутри класса. Для доступа к ним не нужно создавать экземпляр класса

struct Sample {
	static int cout() { return _instances; }
private:
	static int _instances;
};
// ...
cout << Sample::cout();