C 共有体 新しいページはコチラ
提供: yonewiki
(→共有体) |
|||
1行: | 1行: | ||
+ | [[C PlusPlus#Cにもあった技術|C++]]へ戻る | ||
+ | |||
+ | |||
※このページではC言語にも存在していたという意味で記事タイトルがC 共有体になっていますが、<br /> | ※このページではC言語にも存在していたという意味で記事タイトルがC 共有体になっていますが、<br /> | ||
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br /> | [[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br /> | ||
<br /> | <br /> | ||
== '''共有体''' == | == '''共有体''' == | ||
+ | |||
構造体と同じくクラスとしての機能を持っていますが、共有体で宣言された変数群の場合、共有体変数として宣言されたもののうちどれか一つを使い、変数のサイズは共有体の中で宣言された変数のうちで最も大きいサイズのものになるという独特の機能であるということです。通常は共有体で宣言した変数の内のどの型の変数を使ったかを記憶する変数も一緒に管理しておくので、構造体やクラスの中に共有体が定義されて利用されます。 | 構造体と同じくクラスとしての機能を持っていますが、共有体で宣言された変数群の場合、共有体変数として宣言されたもののうちどれか一つを使い、変数のサイズは共有体の中で宣言された変数のうちで最も大きいサイズのものになるという独特の機能であるということです。通常は共有体で宣言した変数の内のどの型の変数を使ったかを記憶する変数も一緒に管理しておくので、構造体やクラスの中に共有体が定義されて利用されます。 | ||
47行: | 51行: | ||
うまく利用できる人ならば、きっと共有体の実体に名前をつけなくても良いことがわかると思います。クラスの中で定義した共有体であれば、共有体メンバ変数へ直接アクセスができるため、uniNumberTestのような実体の名前はいらないことになります。したがって実体の名前を定義しなくてもよいのです。これは構造体でも同じことで、クラスの中で使うことを前提としていれば、実体の名前は必要としない場合があります。C++/CLIでは認められていないみたいなので、このあたりの問題によって、C++/CLIに簡単に移行できないプログラムもあるのだと思います。例えばICUが提供しているUnicodeプロジェクトがその一例になると思います。このwikiの解説の[[C 文字列操作|文字列操作]]の項目で利用することになるものです。 | うまく利用できる人ならば、きっと共有体の実体に名前をつけなくても良いことがわかると思います。クラスの中で定義した共有体であれば、共有体メンバ変数へ直接アクセスができるため、uniNumberTestのような実体の名前はいらないことになります。したがって実体の名前を定義しなくてもよいのです。これは構造体でも同じことで、クラスの中で使うことを前提としていれば、実体の名前は必要としない場合があります。C++/CLIでは認められていないみたいなので、このあたりの問題によって、C++/CLIに簡単に移行できないプログラムもあるのだと思います。例えばICUが提供しているUnicodeプロジェクトがその一例になると思います。このwikiの解説の[[C 文字列操作|文字列操作]]の項目で利用することになるものです。 | ||
− | [[C PlusPlus|C++]]へ戻る | + | |
+ | [[C PlusPlus#Cにもあった技術|C++]]へ戻る |