匿名共用体

ロベールのC++入門講座 16-02

メンバ変数に匿名共用体を用いれば、メモリを共有するメンバ変数を定義できます。

#include <iostream>
using std::cout; using std::endl;

class CSample {
public:
    union {
        int m_int;
        char m_char[4];
    };
};

int main () {
    CSample obj;
    obj.m_int = 0x61626364;
    
    cout << obj.m_char[0] << endl;
    cout << obj.m_char[1] << endl;
    cout << obj.m_char[2] << endl;
    cout << obj.m_char[3] << endl;
    return 0;
}
$ main
d
c
b
a

一見共用体に見えないところが面白いですね。