Ключевое слово static имеет довольно широкое применение в языке C++. Основных методов его использования 3: для глобальной переменной, внутри функции и внутри определения класса.
Static для глобальной переменной означает, что данная переменная видна только тому файлу проекта, в котором она определена. Выглядит это так:
1 |
static int numbers; |
Из других файлов проекта вызвать или как-то использовать ее невозможно. Это позволяет избежать конфликта имен в программе за счет локализации видимости переменных.
Второй способ использования предполагает, что после единичной инициализации переменной с ключом static переменная остается в памяти до конца работы программы и ее переинициализацию провести нельзя. Наглядно это показывает такой код
1 2 3 4 5 |
for(int i = 0; i < 10; i++) { static int check = 0; check++; } |
Переменная check определяется во время первого прохода цикла, и в последующих проходах слово static не дает переинициализировать переменную, потому после цикла check будет иметь значение 10, а не 1, если бы не было static.
Использование static внутри определения класса позволяет создать переменную, значение которой едино для всех экземпляров класса. Например
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class user { int unum; static int num; public: user() { unum = num; num++; } }; int user::num = 0; int main() { user NUM0; user NUM1; } |
Здесь static позволяет задать каждому экземпляру класса номер по порядку их создания.