Nomes
identifier qualified-name operator-function-name conversion-function-name ~ class-name template-identifier template name qualified-class-name :: template name
Comentários
Qualquer identificador que é declarado é um nome. Um nome qualificado é um nome composto com o operador de resolução de escopo. Consulte nomes qualificados.
operator-function-name é um nome declarado no formato
operator operator-name**(** argument1 [ , argument2] );
Consulte Operadores sobrecarregados para obter mais informações sobre a declaração operator-function-name.
conversion-function-name é um nome declarado no formato
operator type-name**(** )
Dica
Você pode fornecer um nome de tipo derivativo como char * no lugar de type-name ao declarar uma função de conversão.
As funções de conversão fornecem conversões de e para os tipos definidos pelo usuário. Para obter mais informações sobre conversões fornecidas pelo usuário, consulte Conversões.
Um nome declarado como ~ class-name é usado como o “destruidor” de objetos de um tipo de classe. Os destruidores geralmente executam operações de limpeza no fim da vida útil de um objeto. Para obter informações sobre destruidores, consulte Destruidores.
Também há várias formas de nomes usados para tipos de modelo e funções de modelo.
Os identificadores de modelo incluem o nome da classe do modelo seguido por colchetes angulares que incluem a lista de argumentos do modelo, que pode incluir tipos e expressões, dependendo de como o modelo foi declarado. Os exemplos de template-identifers são:
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
Os nomes qualificados de funções de modelo podem incluir a palavra-chave template. A palavra-chave template não é permitida em um nome, a menos que precedida pelo operador de resolução de escopo, o operador ->, o operador . ou por um nome qualificado. A seguir são apresentados nomes de funções:
::template f<int> // f is a global template function
A::template g<100> //g is a template member function of class A
Da mesma forma, o nome de um modelo de classe pode ser especificado usando a palavra-chave template se precedido pela resolução do escopo ou pelo nome qualificado. A seguir são apresentados nomes de tipos:
::template A<int> // equivalent to A<int>
Outer::template Inner<int> // equivalent to Outer::Inner<int>
Para obter mais informações sobre modelos, consulte Modelos.