Типы анонимных классов
Классы могут быть анонимными, т. е. их можно объявить без идентификатора. Это полезно при замене имени класса именем typedef, как показано в следующем примере.
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Примечание
Использование анонимных классов, показанное в предыдущем примере, полезно для поддержки совместимости с существующими кодом C.В некотором коде C широко распространено использование typedef вместе с анонимными структурами.
Анонимные классы также полезны, если требуется, чтобы ссылка на член класса отображалась так, как если бы она не содержалась в отдельном классе, как показано в следующем примере.
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
В предыдущем примере доступ к iValue можно получить с помощью оператора выбора члена объекта (.) следующим образом.
int i = ptv.iValue;
Анонимные классы имеют некоторые ограничения. (Дополнительные сведения об анонимных объединениях см. в разделе Объединения.) Анонимные классы:
Не могут иметь конструктор или деструктор.
Не могут быть переданы в качестве аргументов в функции (если проверка типов не отменена с помощью многоточия).
Не могут быть возвращены в качестве возвращаемых значений из функций.