Udostępnij za pośrednictwem


Specyfikatory typów uszczegółowionych

Rozwinięty specyfikator typu jest nazwą typu poprzedzoną przez słowo kluczowe: class, struct, enum lub union.

class identifier 
struct identifier 
enum identifier 
union identifier

Uwagi

Rozwinięty specyfikator typu jest używany do wyróżnienia lub odsłonięcia nazwy typu, która jest ukryta przez deklarację zmiennej o tej samej nazwie, w tym samym zakresie.

Następująca instrukcja deklaruje identyfikator Window jako nazwę klasy.Taka składnia jest używana do przekazywania dalej deklaracji klas.Aby uzyskać więcej informacji dotyczących nazw klas, zobacz Nazwy klas.

class Window;

Jeśli nazwa jest zadeklarowana przy użyciu słowa kluczowego union, musi być również zdefiniowana przy użyciu słowa kluczowego union.Nazwy, które są definiowane przy użyciu słowa kluczowego class mogą być deklarowane przy użyciu słowa kluczowego struct (i odwrotnie).Z tego powodu, poniższe przykłady kodu są dozwolone:

Przykład

// 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()
{
}

Jednakże poniższe przykłady są niedozwolone:

// 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];
};

Zobacz też

Informacje

Specyfikatory typu C++