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.