Объявления

Объявления вводят в программу новые имена. В этом разделе рассматриваются следующие варианты использования объявлений.

  • Указание класса-хранения, типа и компоновки для объекта или функции.

  • Объявление функции с ключевыми словами inline (подставляемая) или virtual (виртуальная).

  • Квалификация декларатора при помощи ключевых слов const (константный) или volatile (непостоянный).

  • Связывание имени с константой (объявление перечисления).

  • Объявление нового типа: объявление class (класса), struct (структуры) или union (объединения).

  • Указание синонима для типа: объявление typedef (определение типа).

  • Указание пространства имен.

  • Объявления типа для использования в качестве синонима при помощи псевдонима.

Объявления позволяет не только вводить новое имя, но и указывать, каким образом компилятор будет интерпретировать идентификатор. Объявления не выполняют автоматическое резервирование области хранения, связанной с идентификатором. Область хранения резервируется определениями.

Примечание

Большинство объявлений одновременно являются определениями.К объявлениям, которые не являются определения, относятся объявление класса без списка членов, а также объявление функции без тела функции.

Объявление может представлять собой один из нижеследующих объектов.

[ decl-specifiers ] [ declarator-list ] ;

определение-функции

linkage-specification

template-specification

alias templates

explicit-template-instantiation

explicit-template-specialization

namespace-definition

namespace-alias-definition

alias-declaration

using-declaration

using-directive

asm-definition

Компонент decl-specifiers показан как необязательный; однако он может опускаться только в объявлениях перечислений и типов классов.

Деклараторы в компоненте declarator-list содержат объявляемые имена. Хотя компонент declarator-list указан как необязательный, его можно опускать только в объявлениях или определениях функций.

Примечание

Объявление функции часто называется прототипом.В прототипе функции содержится информация об аргументах и возвращаемом типе функции.Кроме того, прототип позволяет компилятору корректно выполнять преобразования и помогает обеспечить типобезопасность.

Имя считается объявленным сразу после его декларатора, но перед его (необязательным) инициализатором. Дополнительные сведения см. в разделе Точка объявления.

Объявления находятся в области видимости. Область видимости определяет видимость объявленных имен, а также срок жизни определенного объекта (при наличии). Дополнительные сведения о том, как правила области видимости взаимодействуют с объявлениями, см. в разделе Область.

Объявление объекта одновременно является определением, кроме случаев, когда в нем содержится спецификатор класса хранения extern, описанный в разделе Спецификаторы классов хранения. Объявление функции одновременно является определением, если оно не является прототипом. Прототип — это заголовок функции без определения тела функции. Определение объекта выполняет выделение области хранения и соответствующие инициализации этого объекта.

Связанные разделы

Сведения о компоненте function-definition см. в разделе Определения функций в C++.

Сведения о компоненте linkage-specification см. в разделе Спецификации компоновки.

Сведения о компонентах template-specification, explicit-template-instantiation и explicit-template-specialization см. в разделе Шаблоны.

Сведения о компонентах namespace-definition и namespace-alias-definition см. в разделе Пространства имен (C++).

Сведения о компоненте asm-definition см. в разделе __asm.

См. также

Другие ресурсы

Справочник по языку C++