Compartir a través de


Declaraciones abstractas de C++

Un declarador abstracto es un declarador en el que se omite el identificador. (Para obtener información relacionada, vea Nombres de tipo y Declarantes) Aunque los declaradores no abstractos se usan en la declaración de objetos o funciones, la eliminación del identificador deja solo la información de tipo. Así, los declaradores abstractos tienen el efecto de modificar un tipo base tal como char para especificar un tipo más complejo tal como puntero a char o matriz de char. Como tales, siempre se usan junto con un nombre de tipo base y solo se usan cuando se llama a un tipo de puntero, de matriz o de referencia (incluyendo un puntero a una función que devuelva el tipo base). En esta sección se explican los declaradores abstractos correspondientes a lo siguiente:

Un declarador abstracto es un enumeración que no declara un nombre; el identificador se deja fuera. Por ejemplo,

char * 

especifica el tipo puntero a tipo char. El nombre de tipo consta del nombre de tipo base char más el declarador abstracto *.

De igual forma, el declarador abstracto para una referencia es el operador & y un tipo de matriz se especifica mediante corchetes. Se puede especificar cualquier tipo con solo aplicar la sintaxis para el declarador y quitar el identificador.

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

A continuación se muestra un uso más complicado de un declarador abstracto que declara el puntero de tipo a una función que acepta dos argumentos, ambos de tipo char * y devuelve el tipo char *:

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

Junto con el especificador de tipo base, los declaradores abstractos declaran completamente un tipo. Los nombres de tipo construidos desde declaradores abstractos se pueden utilizar en cualquier lugar donde se llame a 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; 

El especificador typedef se puede utilizar para evitar repetir la complicada sintaxis de los declaradores abstractos.

Vea también

Referencia

Declaradores