Dichiaratori estrai C++
Un dichiaratore astratto è un dichiaratore in cui l'identificatore viene omesso.(Per informazioni correlate, vedere Nomi dei tipi e dichiaratoriMentre i dichiaratori non astratti vengono utilizzati nella dichiarazione di oggetti o funzioni, rimuovere dall'identificatore di mantenere solo le informazioni sul tipo.Pertanto, i dichiaratori astratti hanno effetto di modificare un tipo di base come char per specificare più tipi complessi come il puntatore per char o matrice di caratteri.Di conseguenza, vengono utilizzati sempre combinazione con un nome di tipo di base e solo vengono utilizzati quando un puntatore, una matrice o un tipo di riferimento viene chiamato per (puntatore inclusi funzioni restituendo tale 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 - identificatore viene omesso.Di seguito è riportato un esempio:
char *
specifica il tipo puntatore al 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 viene & operatore e un tipo di matrice viene specificato utilizzando delle parentesi.Qualsiasi tipo può essere specificato solo applicando la sintassi per la dichiarazione e rimozione l'identificatore.
char & // reference to char
char[5] // array of char
L'esempio seguente è un utilizzo più complesso di un dichiaratore astratto che dichiara il tipo puntatore a una funzione che accetta due argomenti, entrambi tipo **char ***tipo e viene restituito char *:
char * (*)( char *, char * )
In combinazione con l'identificatore del tipo di base, i dichiaratori astratti completamente dichiara un tipo.I nomi dei tipi costruiti i dichiaratori astratti possono essere utilizzati ovunque un tipo viene chiamato per:
// 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;
identificatore di typedef può essere utilizzato per evitare di ripetere la sintassi più complessa dei dichiaratori astratti.