複雜的類型規範
複雜的類型指定名稱是一個類型名稱,其前方會出現 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];
};