Поделиться через


Имена

identifier  qualified-name operator-function-name conversion-function-name ~ class-name template-identifier template name qualified-class-name :: template name

Заметки

Любой объявленный идентификатор представляет собой имя. Полное имя — это имя, составленное с помощью оператора разрешения области видимости. См. описание полных имен.

Имя-функции-оператора — это имя, объявленное в следующей форме:

оператор имя-оператора**(** аргумент1 [ , аргумент2] );

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

Имя-функции-преобразования — это имя, объявленное в следующей форме:

operator имя-типа**(** )

Примечание

При объявлении функции преобразования можно вместо имя-типа указать производное имя типа, например символ *.

Функции преобразования предоставляют преобразования как для пользовательских типов, так и со стороны пользовательских типов. Дополнительные сведения о предоставляемых пользователем преобразованиях см. в разделе Преобразования.

Имя, объявленное в форме ~ имя-класса, рассматривается как деструктор объектов этого типа класса. Деструкторы обычно выполняют операции очистки в конце времени существования объекта. Сведения о деструкторах см. в разделе Деструкторы.

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

Идентификаторы шаблонов содержат имя класса-шаблона, за которым следуют угловые скобки, окружающие список аргументов шаблона. В зависимости от способа объявления шаблона в этом списке могут указываться типы и выражения. Примеры идентификаторов-шаблонов:

A<int> // class A takes a type as a template argument
A<int, char> // class A takes two types as template arguments
A<4> // class A takes an int as a template argument
A<> // class A is a template with a default argument

Полные имена функций-шаблонов могут содержать ключевое слово template. Ключевое слово template не допускается в именах, кроме тех случаев, когда перед ним указан оператор разрешения области видимости, оператор ->, оператор . или полное имя. Ниже показаны примеры имен функций.

::template f<int> // f is a global template function
A::template g<100> //g is a template member function of class A

Аналогично, имя класса-шаблона можно определить при помощи ключевого слова template, если перед ним указан оператор разрешения области видимости или полное имя. Ниже показаны примеры имен типов.

::template A<int> // equivalent to A<int>
Outer::template Inner<int> // equivalent to Outer::Inner<int>

Дополнительные сведения о шаблонах см. в разделе Шаблоны.

См. также

Ссылки

Первичные выражения