Back to questions
Junior — Middle
90
Какое отличие в использовании ключевого слова static в языках C и C++?
Companies where asked
А-стор
Answer from AI
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 нет.