Condividi tramite


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.

Vedere anche

Riferimenti

Identificatore typedef