Condividi tramite


Nomi

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

Note

Qualsiasi identifier dichiarato è un name. Un nome completo è un nome composto con l'operatore di risoluzione dell'ambito. Vedere la sezione relativa ai nomi completi.

Un operator-function-name è un nome dichiarato nel form

operator operator-name**(** argument1 [ , argument2] );

Vedere Operatori di overload per altre informazioni sulla dichiarazione di operator-function-name.

conversion-function-name è il nome dichiarato nel form

operator type-name**(** )

Nota

È possibile specificare un nome di tipo derivato, ad esempio char * anziché il type-name quando si dichiara una funzione di conversione.

Le funzioni di conversione consentono di eseguire le conversioni verso e dai tipi definiti dall'utente. Per altre informazioni sulle conversioni fornite dall'utente, vedere Conversioni.

Un nome dichiarato come ~ class-name viene utilizzato come distruttore per oggetti di un tipo classe. I distruttori in genere eseguono operazioni di pulizia al termine della durata di un oggetto. Per informazioni sui distruttori, vedere Distruttori.

Sono inoltre disponibili diverse forme dei nomi utilizzati per tipi di modello e funzioni di modello.

Gli identificatori di modello includono il nome della classe modello seguito da parentesi angolari che racchiudono l'elenco di argomenti di modello, che può includere tipi ed espressioni, a seconda del modo in cui il modello è stato dichiarato. Esempi di template-identifers sono i seguenti:

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

I nomi completi delle funzioni di modello possono includere la parola chiave del modello. La parola chiave del modello non è consentita in un nome a meno che non sia preceduta dall'operatore di risoluzione dell'ambito, dall'operatore -> o . oppure da un nome completo. Gli elementi seguenti sono nomi di funzioni:

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

Analogamente, il nome di un modello di classe può essere specificato utilizzando la parola chiave del modello se preceduto dalla risoluzione dell'ambito o dal nome completo. Gli elementi seguenti sono nomi di tipi:

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

Per altre informazioni sui modelli, vedere Modelli.

Vedere anche

Riferimenti

Espressioni primarie