<目次>
(1) C++の共用体とは?構造体との違いや使用方法について
(1-1) 共用体とは?構造体との違いは?
(1-2) 共用体の定義方法、変数定義方法、初期化方法
(1-3) 共用体のサンプル
(1) C++の共用体とは?構造体との違いや使用方法について
(1-1) 共用体とは?構造体との違いは?


(1-2) 共用体の定義方法、変数定義方法、初期化方法
union 共用体名{
メンバ1;
メンバ2;
メンバ3;
.
.
メンバN;
} オブジェクト名;
(1-3) 共用体のサンプル
●サンプル1:メンバが同一のデータ型
メンバ変数が同一のデータ型(double)の例です。a,b,cのそれぞれに値を代入すると、他の2つも連動して変化しています(同一メモリアドレスなので、1つ書き換える=全部書き換わる)。
#include <iostream>
#include <string>
using namespace std;
int main()
{
//# 共用体の定義
union sample {
//# 初期化方法①
//# C++では共用体定義の中で初期化可能
double a;
double b;
double c;
};
union sample p1;
p1.a = 1;
cout << "================" << endl;
cout << "a= " << p1.a << endl;
cout << "b= " << p1.b << endl;
cout << "c= " << p1.c << endl;
p1.b = 3.14;
cout << "================" << endl;
cout << "a= " << p1.a << endl;
cout << "b= " << p1.b << endl;
cout << "c= " << p1.c << endl;
p1.c = 10.2;
cout << "================" << endl;
cout << "a= " << p1.a << endl;
cout << "b= " << p1.b << endl;
cout << "c= " << p1.c << endl;
}
(結果例)
a,b,cのいずれかを書き換えると、全ての値が書き換わる様子が確認できます。
================ a= 1 b= 1 c= 1 ================ a= 3.14 b= 3.14 c= 3.14 ================ a= 10.2 b= 10.2 c= 10.2
(図131)

●サンプル2:メンバが異なるデータ型
