Статическая локальная функция С++ vs global function
Какова полезность статических функций в файле?
Как они отличаются от глобальных функций в файле?
static int Square(int i)
{
return i * i;
}
vs
int Square(int i)
{
return i * i;
}
Ответ 1
Какова полезность статических функций в файле?
Вы можете использовать эти функции для обеспечения общей логики реализации для других функций в одном файле. Различные вспомогательные функции, специфичные для файла, являются хорошими кандидатами, которые должны быть объявлены как статические файлы.
Как они отличаются от глобальных функций в файле?
Они невидимы для компоновщика, позволяя другим единицам компиляции определять функции с одной и той же сигнатурой. Использование пространств имен в значительной степени облегчает эту проблему, но file- static выполняет функции пространств имен предшествующих, поскольку они являются функцией, унаследованной от языка программирования C.
Ответ 2
Функция A static просто означает, что компоновщик не может экспортировать функцию (т.е. сделать ее видимой для других блоков ). Это делает функцию "private" текущей единицей перевода. Это то же самое, что и перенос функции в анонимное пространство имен.
namespace {
int Square(int i)
{
return i * i;
}
}
Как правило, использование анонимного пространства имен является предпочтительным способом С++ для достижения этого, вместо использования ключевого слова static.
Ответ 3
Статические функции видны в файле, где они были определены.
Вы не можете ссылаться на них вне этого конкретного файла.