Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


Designación de tipos  en los compiladores

§1  Sinopsis

El operador typeid permite obtener en tiempo de ejecución (runtime), el tipo de objetos y expresiones (en la explicación que sigue, las denominamos "entidades"). Es útil para comprobar el tipo de un objeto y si dos objetos son del mismo tipo. En el caso de un objeto obj, su tipo puede obtenerse mediante la sentencia:

cout << typeid(obj).name() << endl;


La descripción de cada uno de los infinitos tipos de objetos (primitivos, o definidos por el usuario), no está estandarizada, por lo que cada fabricante utiliza una simbología especial.  Sin embargo, tras un examen atento de algunos ejemplos no es difícil descubrir sus reglas de construcción.

La tabla muestra el resultado de la sentencia anterior con cada uno de los compiladores indicados con 7 entidades distintas, así como las declaraciones utilizadas en cada caso.

N

Declaración de la entidad entj

Borland C++ 5.5

GNU C++

MS Visual C++ 6.0

1

int* (*ent) (int);

int * (*)(int)

PFi_Pi

int * (__cdecl*)(int)

2

int* ent(int);

int * (*)(int)

Fi_Pi

int * (__cdecl*)(int)

3

int ent(int);

int (*)(int)

Fi_i

int (__cdecl*)(int)

4

int (*ent) (int);

int (*)(int)

PFi_i

int (__cdecl*)(int)

5

void ent(int *fu(int));

void (*)(int * (*)(int))

FPFi_Pi_v

void (__cdecl*)(int * (__cdecl*)(int))

6

void ent(int (*p)(int))

void (*)(int (*)(int))

FPFi_i_v

void (__cdecl*)(int (__cdecl*)(int))

7

void foo(int *ent(int));

int * (*)(int)

PFi_Pi

int * (__cdecl*)(int)


Es importante resaltar aquí, que la entidad 7 (argumento de la función foo), es tratado por los tres compiladores como un puntero-a-función del mismo tipo (objeto 1).