Инициализация
Описание может задавать начальное значение описываемого идентификатора. Инициализатору предшествует =, и он состоит из выражения или списка значений, заключенного в фигурные скобки.
инициализатор: = expression = { список_инициализаторов } = { список_инициализаторов , } ( список_выражений )
список_инициализаторов : выражение список_инициализаторов , список_инициализаторов { список_инициализаторов }
Все выражения в инициализаторе статической или внешней переменной должны быть константными выражениями, которые описаны в , или выражениями, которые сводятся к адресам ранее описанных переменных, возможно со смещением на константное выражение. Автоматические и регистровые переменные могут инициализироваться любыми выражениями, включающими константы, ранее описанные переменные и функции.
Гарантируется, что неинициализированные статические и внешние переменные получают в качестве начального значения "пустое значение". Когда инициализатор применяется к скаляру (указатель или объект арифметического типа), он состоит из одного выражения, возможно, заключенного в фигурные скобки. Начальное значение объекта находится из выражения; выполняются те же преобразования, что и при присваивании.
Заметьте, что поскольку () не является инициализатором, то "X a();" является не описанием объекта класса X, а описанием функции, не получающей значений и возвращающей X.