Const и static являются ортогональными понятиями как в C, так и в C ++.
В constКлючевое слово указывает компилятору , чтобы запретить переменную появляться как Lvalue любого выражения - по существу , делает его только для чтения.
В языке C staticключевое слово имеет несколько применений в зависимости от того, к чему оно применяется. При применении к переменной функции он указывает, что переменная не хранится в локальной области видимости функции, но доступна при ее вызовах. При применении к глобальной переменной или функции он становится доступным только для определенного файла - другими словами, он доступен только внутри модуля компиляции (если не объявлен extern).
В C ++ staticключевое слово можно использовать в определении класса, чтобы переменная или функции были общими для всех экземпляров класса, а не были локальными для каждого экземпляра. Кроме того, функция статического класса в C ++ может обращаться только к статическим переменным этого класса (или классов, к которым у нее есть доступ). Теперь в C ++ constчленам предоставляется внутренняя связь с модулем компиляции, если они явно не объявлены extern- это может быть то, о чем вы говорите. Это позволяет совместно использовать константы времени компиляции в модуле с помощью файлов заголовков. Однако имейте в виду, что члены на самом деле не статичны - скорее, константа компилируется в каждое место, где на нее ссылаются.