C++の構造体(struct)は、メンバーがディフォルトのアクセス指定子が public な class です。
class のディフォルトのアクセス指定子は private です。
class と struct の違いはこれだけです。
C++の共用体(''union'')は、基本的にC言語の共用体と同じです。
ただし、C++では構造体がほぼクラスのように扱われるようになったので、ほとんどの共用体もクラスとして扱われます。
つまり、アクセス制限を指定したり、メンバー関数を持つことができるのです。
一方で、当然ながら、共用体には固有の制限があります。
C++の共用体は以下の制限を持ちます。
継承の機能がありません。仮想関数を持ちませんし、基底クラスを持てず、基底クラスにもなれません。
以下のようなオブジェクトは要素にできません。
共用体は、static データメンバーを持てません。
共用体は、参照を持てません。