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.