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