Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L'utilisation du spécificateur d' typedef avec des types de classe est prise en charge principalement en raison de la pratique en matière de C ANSI de déclarer les structures sans nom dans les déclarations d' typedef .Par exemple, de nombreux programmeurs en langage C utilisent ce qui suit :
// 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;
L'avantage d'une déclaration est qu'il permet des déclarations comme :
POINT ptOrigin;
au lieu de :
struct point_t ptOrigin;
En C++, la différence entre les noms d' typedef et des types réels (déclarés avec classe, l' struct, l' union, les mots clés et d' enum ) est plus distincte.Bien que la pratique en matière de C de déclarer une structure inconnue dans une instruction d' typedef fonctionne encore, elle ne fournit aucun avantage de notation que dans C.
// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
int POINT();
unsigned x;
unsigned y;
} POINT;
L'exemple précédent déclare une classe nommée POINT à l'aide de la syntaxe sans nom d' typedef de classe.POINT est traité comme nom de classe ; toutefois, les restrictions suivantes s'appliquent aux noms ont présente de la façon suivante :
le nom (le synonyme) ne peut pas apparaître après classe, struct, ou préfixe d' union .
le nom ne peut pas être utilisé comme noms de constructeur ou de destructeur dans une déclaration de classe.
En résumé, cette syntaxe ne fournit pas de mécanisme pour l'héritage, la construction, ou destruction.