Condividi tramite


Dichiaratori astratti C++

Un dichiaratore astratto è un dichiaratore in cui l'identificatore viene omesso. (Per informazioni correlate, vedere Nomi dei tipi e Dichiaratori) Mentre i dichiaratori non astratti vengono utilizzati nella dichiarazione di oggetti o funzioni, la rimozione dell'identificatore lascia solo le informazioni sul tipo. Pertanto, i dichiaratori astratti hanno l'effetto di modificare un tipo di base come char per specificare tipi più complessi come il puntatore a char o matrice di char. Per questa ragione, vengono utilizzati sempre in combinazione con un nome di tipo di base e utilizzati solo quando un puntatore, una matrice o un tipo di riferimento viene chiamato (incluso un puntatore a funzione che restituisce quel tipo di base). I dichiaratori astratti che corrispondono a quello riportato di seguito vengono illustrati in questa sezione:

Un dichiaratore astratto è un dichiaratore che non dichiara un nome - l'identificatore viene omesso. Di seguito è riportato un esempio:

char * 

specifica il tipo puntatore a tipo char. Il nome del tipo è costituito dal nome del tipo di base char più il dichiaratore astratto *.

Analogamente, il dichiaratore astratto per un riferimento è l'operatore & e un tipo matrice viene specificato utilizzando le parentesi. Qualsiasi tipo può essere specificato solo applicando la sintassi per il dichiaratore e rimuovendo l'identificatore.

char &   // reference to char
char[5] // array of char

Di seguito è riportato un utilizzo più complesso di un dichiaratore astratto che dichiara il tipo puntatore a una funzione che accetta due argomenti, entrambi di tipo char * e restituisce il tipo char *:

char * (*)( char *, char * )

In combinazione con l'identificatore del tipo di base, i dichiaratori astratti dichiarano completamente un tipo. I nomi dei tipi costruiti da dichiaratori astratti possono essere utilizzati ovunque viene chiamato un tipo:

// Get the size of array of 10 pointers to type char.
size_t nSize = sizeof( char *[10] );
// cast fptr to pointer to function that takes two arguments, both of type
// pointer to char
 i = (char * (*)(char*, char*)) fptr; 

L'identificatore typedef può essere utilizzato per evitare di ripetere la sintassi complessa dei dichiaratori astratti.

Vedere anche

Riferimenti

Dichiaratori