共用方式為


匿名等位

匿名等位是指未使用 class-namedeclarator-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;
}
  

請參閱

參考

等位