Поделиться через


Типы анонимных классов

Классы могут быть анонимными, т. е. их можно объявить без идентификатора. Это полезно при замене имени класса именем 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;

Анонимные классы имеют некоторые ограничения. (Дополнительные сведения об анонимных объединениях см. в разделе Объединения.) Анонимные классы:

  • Не могут иметь конструктор или деструктор.

  • Не могут быть переданы в качестве аргументов в функции (если проверка типов не отменена с помощью многоточия).

  • Не могут быть возвращены в качестве возвращаемых значений из функций.

См. также

Ссылки

Определение типов классов