Anonimowe typy klas
Klasy mogą być anonimowe — oznacza to, że można je zadeklarować bez identyfikatora. Jest to przydatne, gdy zastąp typedef
nazwę klasy nazwą, tak jak w następujących przypadkach:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Uwaga
Użycie klas anonimowych pokazanych w poprzednim przykładzie jest przydatne do zachowania zgodności z istniejącym kodem języka C. W niektórych kodzie C użycie typedef
w połączeniu ze strukturami anonimowymi jest powszechne.
Klasy anonimowe są również przydatne, gdy chcesz, aby odwołanie do składowej klasy było wyświetlane tak, jakby nie było zawarte w oddzielnej klasie, jak w następujących przypadkach:
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
W poprzednim kodzie iValue
można uzyskać dostęp przy użyciu operatora wyboru elementu członkowskiego obiektu (.) w następujący sposób:
int i = ptv.iValue;
Klasy anonimowe podlegają pewnym ograniczeniom. (Aby uzyskać więcej informacji na temat anonimowych związków zawodowych, zobacz Unions.) Klasy anonimowe:
Nie można mieć konstruktora ani destruktora.
Nie można przekazać jako argumentów do funkcji (chyba że sprawdzanie typów zostanie pokonane przy użyciu wielokropka).
Nie można zwrócić wartości zwracanych z funkcji.
Anonimowe struktury
Specyficzne dla firmy Microsoft
Rozszerzenie Microsoft C umożliwia zadeklarowanie zmiennej struktury w innej strukturze bez podawania jej nazwy. Te zagnieżdżone struktury są nazywane strukturami anonimowych. Język C++ nie zezwala na struktury anonimowe.
Dostęp do elementów członkowskich struktury anonimowej można uzyskać tak, jakby były członkami w strukturze zawierającej.
// 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
END Microsoft Specific
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla