Verwendung von typedef mit Klassentypen

Die Verwendung des typedef Bezeichner mit Klassentypen wird größtenteils aufgrund von ANSI C-Praxis des Deklarierens unbenannter Strukturen in typedef Deklarationen unterstützt.Zum Beispiel verwenden viele C-Programmierer Folgendes:

// 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;

Der Vorteil einer solchen Deklaration Deklarationen besteht darin, dass als aktiviert:

POINT ptOrigin;

statt:

struct point_t ptOrigin;

In C++ ist der Unterschied zwischen typedef Namen und realen Typen (deklariert mit Klasse, struct, Unionund enum unterschiedlicher Schlüsselwörter).Obwohl die C-Praxis des Deklarierens einer namenlosen Struktur in einer typedef-Anweisung weiterhin funktioniert, enthält sie keine Notations Vorteile, wie sie in C beschrieben.

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

Im vorherigen Beispiel deklariert eine Klasse mit dem Namen POINT mit unbenannten Klassen typedef Syntax.POINT wird als Klassennamen behandelt. Es gelten folgende Einschränkungen für Namen vorstellten auf diese Weise zu:

  • Der Name (das Synonym) darf nicht nach Klasse, structoder Union Präfix angezeigt werden.

  • Der Name darf nicht als Konstruktor- oder Destruktor innerhalb einer Klassendeklaration Namen verwendet werden.

Zusammenfassend stellt diese Syntax keinen Mechanismus für die Vererbung oder die Erstellung, Zerstörung bereit.

Siehe auch

Referenz

Typedef-Spezifizierer