В C вы можете сделать это:Статическое сопзЬ без инициализаторе
static const int a;
int main(){}
И это, кажется, хорошо. C99 §6.7.8p10 говорит:
Если объект, который имеет длительность статического хранения не инициализируется явно, то:
- если она имеет арифметический тип, он инициализируется (положительный или без знака) нуль;
Аналогично С ++ 14 §3.6.2p2 говорит:
Переменные со статической продолжительностью хранения (3.7.1) или хранения нити длительности (3.7.2) должна быть равна нулю инициализирован (8.5) перед любой другой инициализацией .
Разница заключается в C++ 14 он нужен инициализатор §8.5p7:
Если программа требует инициализации по умолчанию объекта в Const высококвалифицированного типа
T
,T
Shall тип класса с пользовательским конструктором по умолчанию.
Итак, я спрашиваю, почему инициализатор требуется на C++? Не требуется инициализатор, если a
не является const
, поэтому какая разница делает const
здесь, что бы не инициализировать ошибку?
C и C++ - разные языки. –