В С++ различают локальные и глобальные переменные. Глобальные переменные статичны по определению. Но в 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();