匿名等位
匿名等位是指未使用 class-name 或 declarator-list 宣告的等位。
union { member-list }
備註
這類等位宣告不會宣告類型,而是宣告物件。 匿名等位中宣告的名稱不可與相同範圍內宣告的其他名稱發生衝突。
在 C 中,匿名等位可以擁有標記,但是不能擁有宣告子。
匿名等位中宣告的名稱會直接使用,就像非成員變數一般。
除了等位成員資料中所列的限制之外,匿名等位還有其他限制:
如果是在檔案範圍中宣告,則必須同時宣告為 static。 如果是在區域範圍中宣告,則必須是靜態或自動。
它們只能擁有 Public 成員,Private 和 Protected 成員在匿名等位中會產生錯誤。
它們不能有函式成員。
注意事項 只是將語法的 class-name 部分省略並不會讓等位變成匿名等位。若要將等位做為匿名等位限定,則宣告不得宣告物件。
範例
// anonymous_unions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
union {
int d;
char *f;
};
d = 4;
cout << d << endl;
f = "inside of union";
cout << f << endl;
}