variantクラスは共用体のタイプセーフな代替です。unions.unionは、すべてのメンバーが同じメモリ位置を共有するユーザー定義型です。共用体に含まれていることを意味します。共用体のメンバー数には関係なく、最大のメンバーを格納するのに必要なメモリーだけが常に使用されることも意味します。member.共用体は多数のオブジェクトやメモリの制限がある場合、メモリの節約に役立ちます。書き込まれた最後のメンバーに常にアクセスするようにする責任はプログラマにあるため、正しく使用するには特に注意が必要です。重要なコンストラクターを持つメンバーの種類がある場合、追加のコードを記述してそのメンバーの構築および破棄を明示的に実行する必要があります。共用体を使用する前に、解決すべき問題が、基本クラスと派生クラスを使用することでより適切に表現できないか検討します。};パラメーターParametersnamename共用体に付ける型名。union.メンバーリストmember-list共用体に含めることができるメンバー。「解説」を参照してください。キーワードを使用して共用体の宣言を開始し、メンバーリストを中かっこで囲みます。unions前の例では、共用体にアクセスするすべてのコードが、データを保持しているメンバーを知る必要がありました。この問題の最も一般的な解決策は、共用体を構造体で囲み、共用体に現在格納されているデータの種類を示す列挙メンバーを同じ構造体に追加することです。これは判別共用体と呼ばれ、次の例は基本的なパターンを示しています。inputs.push(second);}前の例で、入力構造体の共用体には名前がないことに注意してください。これは無名共用体であり、そのメンバーには、構造体の直接のメンバーの場合と同様にアクセスできます。無名共用体の詳細については、以下のセクションを参照してください。below.もちろん、前の例で示した問題は、共通の基本クラスから派生するクラスを使用して、コンテナー内の各オブジェクトのランタイムの型に基づいてコードを分岐することによっても解決できます。この結果、コードの維持や理解は容易になりますが、共用体を使用するよりは低速になる場合があります。共用体を使用すると、全く関連のない型を格納することや、共用体変数自体の種類を変更せずに格納されている値の型を動的に変更することができます。異種配列を作成できます。構造体は誤用されやすいので注意してください。データを保持するメンバーにアクセスするには、ユーザーが識別子を正しく使用する必要があります。次の例で示すように、共用体をプライベートにし、特別なアクセス関数を指定することで、誤用を防ぐことができます。メンバーを共用体に含める場合、その型にはユーザーが指定したコンストラクター、デストラクター、または代入演算子を含めることができませんでした。これらの制限が削除されています。共用体にこのようなメンバーを含める場合、コンパイラは、ユーザー指定外の特殊なメンバー関数を削除済みとして自動的にマークします。共用体がクラスまたは構造体の内部にある無名共用体の場合、ユーザー指定外のクラスまたは構造体の特殊なメンバー関数は削除済みとしてマークされます。次の例で、この特殊処理が必要なメンバーが共用体のメンバーのいずれかに含まれるケースの処理方法を示します。};};共用体には参照を保存できません。つのクラスから継承すること、仮想関数を含めることはできません。unions中かっこで囲まれた式を代入して、同じステートメントで共用体の宣言と初期化を実行できます。この式は評価され、共用体の最初のフィールドに割り当てられます。unions無名共用体は、クラス名または宣言子リストを使用せずに宣言されている共用体です。}無名共用体で宣言されている名前は非メンバー変数のように直接使用されます。そのため、無名共用体で宣言された名前は前後のスコープで一意である必要があります。scope.名前付き共用体の制限に加えて、匿名共用体には次の追加の制限が適用されます。staticとして宣言する必要があります。scope.publicメンバーのみを持つことができます。匿名共用体のprivateメンバーとprotectedメンバーは、エラーを生成します。errors.メンバー関数を含めることはできません。StructsキーワードKeywordsclassclassstructstructお勧めのコンテンツこのページはお役に立ちましたか?はいいいえ追加のフィードバックはありますか?スキップ送信ありがとうございます。直接フィードバックを残すこともできます。直接フィードバックを残すこともできます。Cookie利用条件サイトのフィードバック商標このページはお役に立ちましたか?はいいいえ追加のフィードバックはありますか?スキップ送信ありがとうございます。Cookie利用条件サイトのフィードバック。