Anonyme Klassentypen
Klassen können anonym sein , d. h. sie können ohne Bezeichner deklariert werden. Dies ist nützlich, wenn Sie einen Klassennamen durch einen typedef
Namen ersetzen, wie in der folgenden Abbildung dargestellt:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Hinweis
Die Verwendung von anonymen Klassen, die im vorherigen Beispiel gezeigt wird, ist für das Beibehalten der Kompatibilität mit existierendem C-Code nützlich. In einigen C-Code ist die Verwendung in typedef
Verbindung mit anonymen Strukturen weit verbreitet.
Anonyme Klassen sind außerdem nützlich, wenn Sie möchten, dass ein Verweis auf einen Klassenmember so angezeigt wird, als befände er sich nicht in einer separaten Klasse, wie im Folgenden gezeigt:
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
Im vorherigen Code iValue
kann wie folgt über den Objektelementauswahloperator (.) zugegriffen werden:
int i = ptv.iValue;
Anonyme Klassen unterliegen bestimmten Einschränkungen. (Weitere Informationen zu anonymen Gewerkschaften finden Sie unter Unions.) Anonyme Kurse:
Können keinen Konstruktor oder Destruktor aufweisen.
Kann nicht als Argumente an Funktionen übergeben werden (es sei denn, die Typüberprüfung wird mit den Auslassungspunkten besiegt).
Können nicht als Rückgabewerte von Funktionen zurückgegeben werden.
Anonyme Strukturen
Microsoft-spezifisch
Eine Microsoft C-Erweiterung ermöglicht es Ihnen, eine Strukturvariable innerhalb einer anderen Struktur zu deklarieren, ohne ihr einen Namen zu geben. Diese geschachtelten Strukturen werden als anonyme Strukturen bezeichnet. In C++ sind anonyme Strukturen nicht zulässig.
Sie können auf Member einer anonymen Struktur zugreifen, als ob sie Member der enthaltenden Struktur wären.
// anonymous_structures.c
#include <stdio.h>
struct phone
{
int areacode;
long number;
};
struct person
{
char name[30];
char gender;
int age;
int weight;
struct phone; // Anonymous structure; no name needed
} Jim;
int main()
{
Jim.number = 1234567;
printf_s("%d\n", Jim.number);
}
//Output: 1234567
Ende Microsoft-spezifisch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für