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