Anonimowe typy klas
Klasy mogą być anonimowe — to znaczy, że mogą być zadeklarowane bez identyfikatora.Jest to przydatne podczas zamieniania nazwy klasy na nazwę typedef, co przedstawiono poniżej:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
[!UWAGA]
Wykorzystanie anonimowych klas pokazane w poprzednim przykładzie jest przydatne dla zachowania zgodności z istniejącym kodem C.W niektórych częściach kodu C, powszechne jest wykorzystanie typedef w połączeniu ze strukturami anonimowymi.
Klasy anonimowe są przydatne także w przypadku, gdy chcemy aby odwołanie do elementu członkowskiego klasy wyglądało tak, jakby nie był zawarty w osobnej klasie, jak przedstawiono poniżej:
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
W powyższym kodzie, do iValue można uzyskać dostęp za pomocą 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 dotyczących związków anonimowych, zobacz Związki.) Klasy anonimowe:
Nie mogą mieć konstruktora ani destruktora.
Nie mogą być przekazywane jako argumenty do funkcji (chyba że kontrola typów jest pokonana za pomocą wielokropka).
Nie mogą zostać zwrócone jako wartości zwracane przez funkcje.