Uso de typedef con tipos de clase

El uso del especificador typedef con tipos de clase se admite en gran medida debido a la práctica de ANSI C de declarar las estructuras sin nombre en declaraciones typedef. Por ejemplo, muchos programadores de C usan lo siguiente:

// typedef_with_class_types1.cpp
// compile with: /c
typedef struct {   // Declare an unnamed structure and give it the
                   // typedef name POINT.
   unsigned x;
   unsigned y;
} POINT;

La ventaja de esta declaración es que hace posibles declaraciones como:

POINT ptOrigin;

en lugar de:

struct point_t ptOrigin;

En C++, la diferencia entre los nombres de typedef y los tipos reales (declarados con las palabras clave clase, struct, union y enum) es mayor. Aunque todavía funciona la práctica de C de declarar una estructura anónima en una instrucción typedef, no proporciona ningún beneficio notacional como lo hace en C.

// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
   int POINT();
   unsigned x;
   unsigned y;
} POINT;

En el ejemplo anterior se declara una clase denominada POINT mediante la sintaxis typedef de la clase sin nombre. POINT se trata como un nombre de clase; sin embargo, a los nombres así especificados se aplican las siguientes restricciones:

  • El nombre (el sinónimo) no puede aparecer después de un prefijo class, struct o union.

  • El nombre no se puede utilizar como nombre de constructor o destructor dentro de una declaración de clase.

En resumen, esta sintaxis no proporciona ningún mecanismo para la herencia, la construcción o la destrucción.

Vea también

Referencia

typedef (Especificador)