Sobes.tech
Назад к вопросам
Junior — Middle
91

Какое отличие в использовании ключевого слова static в языках C и C++?

Компании, где спрашивали
А-стор

Ответ от нейросети

sobes.tech AI

В языке C ключевое слово static используется для изменения области видимости и времени жизни переменных и функций:

  • Для глобальных переменных и функций static ограничивает область видимости текущим файлом (internal linkage), то есть они не видны из других файлов.
  • Для локальных переменных внутри функции static сохраняет значение переменной между вызовами функции (переменная живет на протяжении всей программы).

В C++ static сохраняет те же смыслы, но добавляется еще использование в контексте классов:

  • В классе static переменные и методы принадлежат самому классу, а не конкретному объекту. Такие члены существуют в единственном экземпляре для всего класса.

Пример:

// C и C++
static int counter = 0; // виден только в этом файле

void func() {
    static int callCount = 0; // сохраняет значение между вызовами
    callCount++;
}

// В C++
class MyClass {
public:
    static int staticValue; // общая для всех объектов
    static void staticMethod() {
        // ...
    }
};

int MyClass::staticValue = 0;

Таким образом, главное отличие — в C++ static применяется также для определения статических членов класса, чего в C нет.