Семантика совершенно другая. Область видимости статической функции ограничивается единицей трансляции в которой она определяется. Своего рода инкапсуляция в C.
Pantene742, это не касается классов и их данных - унаследованная функциональность от си) Означает, грубо говоря, что вы не можете вызвать функцию из другого c/cpp файла.
т.е. для static функции вне класса область видимости единица трансляции (файл *.c, *.cpp) в другом файле в проекте функция не видна. Для static функции члена класса область видимости ограничена классом?
Pantene742, в JS вообще все очень плохо было в этом плане. Но, let/const и стрелочные функции эти безобразия делают почти такими же логичными, как в остальных си-подобных языках.
В C++ все как раз проще, но его лучше учить все-таки через си, отделяя мух от котлет. В C++ любят переиспользовать старые ключевые слова с другим смыслом, как это еще случилось с auto и const.
Для static функции члена класса область видимости ограничена классом?
Нет, не ограничена. Здесь это означает лишь, что у функции-члена нет своего this, т.е. она не может быть виртуальной и имеет доступ лишь к другим статическим полям или функциям-членам типа.