Resumo de C++ declaradores
Um Declarador abstrata é um Declarador em que o identificador é omitido.(Para obter informações relacionadas, consulte Nomes de tipo e declaradores) Enquanto declaradores non-abstract são usados na declaração de objetos ou funções, a colocação do identificador deixa apenas as informações de tipo.Assim, o abstratos declaradores têm o efeito de modificar um tipo base, como char para especificar o tipo mais complexo, como o ponteiro para char ou matriz de char.Como tal, eles sempre são usados em combinação com um nome de tipo base e só são usados quando um tipo de ponteiro, matriz ou referência é chamado para (incluindo um ponteiro para função retornar o tipo base).Os declaradores abstratos correspondente à seguinte são discutidos nesta seção:
Um Declarador abstrata é um Declarador que não declara um nome — o identificador será deixado de fora.Por exemplo,
char *
Especifica o tipo ponteiro digitar char.O nome do tipo consiste no nome do tipo base char plus o Declarador abstrato *.
Da mesma forma, o Declarador abstrato para obter uma referência é o & operador e um tipo de matriz é especificado usando colchetes.Qualquer tipo pode ser especificado, basta aplicar a sintaxe para o Declarador e removendo o identificador.
char & // reference to char
char[5] // array of char
A seguir está um uso mais complicado de um Declarador abstrato que declara o ponteiro de tipo para uma função que leva dois argumentos, ambos do tipo **char ***e retorna o tipo de char *:
char * (*)( char *, char * )
Em combinação com o especificador de tipo base, declaradores abstratas completamente declarar um tipo.O tipo construídos a partir de declaradores abstratas de nomes podem ser usados em qualquer lugar que um tipo é chamado para:
// 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;
O typedef especificador pode ser usado para evitar a repetição a sintaxe complicada do declaradores abstratas.