0

ユニオンはC ++のクラスであることがわかりました。

クラスを共用体として宣言する場合:

union Foo // ユニオン型を宣言
{
    char ch;

    int 関数 (int a);

};          

ユニオンのサイズは 4 または 1 になりますか (char サイズが 1 で、ポインタ サイズが 4 であると仮定)。

4

2 に答える 2

3

ユニオンはC ++でもクラスであることがわかりました。(私のものを強調)

いいえ (クラスではなく、クラス型です)。私の悪い、どうやらそれらはクラスです:

3.9.2/1

  • [...]
  • ユニオンは、異なる時間に異なるタイプのオブジェクトを含むことができるクラスです
  • [...]

(もはや関係ありません)共用体はvirtualメンバー関数を持つことができず、継承にも使用できません。

答えに:

サイズは、最大のデータ メンバーを収容するのに十分な大きさになります。この場合、おそらく1はい。

于 2012-09-07T12:00:59.910 に答える
2

自分で試してみてください:

#include <iostream>

union Foo    // Declare union type
{
    char   ch;

    int func(int a);     
};   

int main()
{
    std::cout << sizeof(Foo);
}

出力:

1
于 2012-09-07T12:01:04.277 に答える