Имена
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>
Дополнительные сведения о шаблонах см. в разделе Шаблоны.