Udostępnij za pośrednictwem


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.

Zobacz też

Informacje

Definiowanie typów klas