ユニオンはC ++のクラスであることがわかりました。
クラスを共用体として宣言する場合:
union Foo // ユニオン型を宣言 { char ch; int 関数 (int a); };
ユニオンのサイズは 4 または 1 になりますか (char サイズが 1 で、ポインタ サイズが 4 であると仮定)。
ユニオンはC ++でもクラスであることがわかりました。(私のものを強調)
いいえ (クラスではなく、クラス型です)。私の悪い、どうやらそれらはクラスです:
- [...]
- ユニオンは、異なる時間に異なるタイプのオブジェクトを含むことができるクラスです
- [...]
(もはや関係ありません)共用体はvirtual
メンバー関数を持つことができず、継承にも使用できません。
答えに:
サイズは、最大のデータ メンバーを収容するのに十分な大きさになります。この場合、おそらく1
はい。
自分で試してみてください:
#include <iostream>
union Foo // Declare union type
{
char ch;
int func(int a);
};
int main()
{
std::cout << sizeof(Foo);
}
出力:
1