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


Сложные спецификаторы типов

Усовершенствованный спецификатор типа — это имя типа, которому предшествует ключевое слово class, struct, enum или union.

class identifier 
struct identifier 
enum identifier 
union identifier

Заметки

Усовершенствованный спецификатор типа используется для выделения или для указания имени типа, скрытого объявлением переменной с тем же именем в той же области.

Показанный ниже оператор объявляет в качестве имени класса идентификатор Window. Такой синтаксис используется для прямого объявления классов. Дополнительные сведения о классах имен см. в разделе Имена классов.

class Window;

Если имя объявляется с помощью ключевого слова union, оно должно быть также определено с помощью этого ключевого слова (union). Имена, определенные с помощью ключевого слова class, можно объявлять с помощью ключевого слова struct (и наоборот). Поэтому приведенные ниже примеры кода допустимы.

Пример

// elaborated_type_specifiers1.cpp
struct A;   // Forward declaration of A.

class A   // Define A.
{
public:
   int i;
};

int main()
{
}

// elaborated_type_specifiers2.cpp
class A;   // Forward declaration of A

struct A
{
private:
    int i;
};

int main()
{
}

// elaborated_type_specifiers3.cpp
union A;   // Forward declaration of A

union A
{
   int  i;
   char ch[2];
};

int main()
{
}

Однако следующие примеры недопустимы.

// elaborated_type_specifiers4.cpp
union A;   // Forward declaration of A.

struct A
{   // C2011
   int i;
};

// elaborated_type_specifiers5.cpp
union A;   // Forward declaration of A.

class A
{   // C2011
public:
   int i;
};

// elaborated_type_specifiers6.cpp
struct A;   // Forward declaration of A.

union A
{   // C2011
   int  i;
   char ch[2];
};

См. также

Ссылки

Спецификаторы типов C++