Utilizzo di typedef con tipi di classe
L'utilizzo dell'identificatore typedef con i tipi di classe è ampiamente supportato a causa della procedura ANSI C di dichiarare strutture senza nome nelle dichiarazioni typedef. Ad esempio, molti programmatori C utilizzano le operazioni seguenti:
// 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;
Il vantaggio di questo tipo di dichiarazione è che consente dichiarazioni quali:
POINT ptOrigin;
invece di:
struct point_t ptOrigin;
Nel linguaggio C++, la differenza tra i nomi typedef e i tipi reali (dichiarati con le parole chiave class, struct, union e enum) è più distinta. Sebbene la procedura C di dichiarazione di una struttura senza nome in un'istruzione typedef funzioni ancora, non fornisce gli stessi vantaggi di notazione del linguaggio C.
// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
int POINT();
unsigned x;
unsigned y;
} POINT;
Nell'esempio precedente viene dichiarata una classe denominata POINT utilizzando la sintassi della classe senza nome typedef. POINT viene considerato come un nome di classe; tuttavia, le restrizioni seguenti vengono applicate ai nomi introdotti nel modo seguente:
Il nome (il sinonimo) non può apparire dopo un prefisso class, struct o union.
Il nome non può essere utilizzato come nome del distruttore o del costruttore all'interno di una dichiarazione di classe.
In breve, questa sintassi non fornisce alcun meccanismo per l'ereditarietà, la costruzione o la distruzione.