Const і static - це ортогональні поняття як на C, так і на C ++.
constКлючове слово вказує компілятору , щоб заборонити змінну з'являтися як Lvalue будь-якого виразу - по суті , робить його тільки для читання.
У C staticключове слово має декілька застосувань залежно від того, до чого воно застосовується. Застосовуючись до змінної функції, це вказує на те, що змінна не зберігається в локальній області дії функції, але доступна через її виклики. Застосовуючись до глобальної змінної або функції, вона стає доступною лише для певного файлу - іншими словами, вона доступна лише в блоці компіляції (якщо це не оголошено extern).
У C ++ staticключове слово може використовуватися у визначенні класу для створення змінної або функцій, спільних для всіх екземплярів класу, а не для кожного з них. Крім того, статична функція класу в C ++ може отримувати доступ лише до статичних змінних цього класу (або класів, до яких вона має доступ). Тепер у C ++ constнадає членам внутрішній зв'язок з блоком компіляції, якщо вони явно не оголошені extern- це може бути те, що ви посилаєтесь на нього. Це дозволяє спільно використовувати константи часу компіляції між блоками за допомогою файлів заголовків. Однак майте на увазі, що члени насправді не є статичними - скоріше константа компілюється в кожному розташуванні, де на неї посилаються.