C++

2013-03-08, cpp

共用体

構造体とそっくりの記述をしますが、共用体は、メモリ上の同一の領域を異なる型の別々の変数で操作出来るようにするものです。多くの開発者にとって、それほど頻繁に利用するものでは無さそうですが、ライブラリの定義などを見ていると時々登場するようなので、概念を知っておく必要はありそうです。

union smp{
  char c;
  int i;
}


// C流
union smp dt = {1};
// C++流
smp dt = {1};

例えば、OpenCVのARマーカ探索サンプルプログラムの中では以下のような共用体が利用されていました。float型(長さ16)の配列を、4x4の2次元配列(行列として利用)としてもアクセスできるように設計されています。

  union
  {
    float data[16];
    float mat[4][4];
  };
}

参考URL

新Visual C++6.0入門 ビギナー編

この記事は役に立ちましたか?