C++ における構造体とクラスの違い

情報と知識の主な違い

  • 構造は、異なるデータ型の論理的に関連するデータ項目を組み合わせたユーザー定義のデータ型であるのに対し、クラスは、特定の種類のオブジェクトを構築するための設計図または一連の命令です。
  • 構造体は値型のデータ型であるのに対し、クラスは参照型のデータ型です。
  • 構造体のデフォルト コンストラクターは変更できませんが、クラスのデフォルト コンストラクターは変更できます。
  • 構造体にはデストラクターを含めることはできません。 一方、クラスにはデストラクターを含めることができます。
  • クラスは小規模なプログラムで使用され、構造体は大規模なプログラムで使用されます。
  • 構造体では、すべての値の型がスタック上に割り当てられますが、クラスでは、すべての値の型がヒープ上に割り当てられます。
  • 「構造」のインスタンスは「構造変数」と呼ばれ、「クラス」のインスタンスは「オブジェクト」と呼ばれます。
  • 構造体のメンバー変数は直接開始できませんが、クラスのメンバー変数は直接開始できます。
構造体とクラスの違い
構造体とクラスの違い

C++の構造とは何ですか?

構造体は、float、char、int などのさまざまなデータ型の論理的に関連するデータ項目を結合するユーザー定義のデータ型です。

すべての構造要素は、連続したメモリ位置に格納されます。 構造型変数は、さまざまなデータ型の複数のデータ項目を XNUMX つの名前で保存するのに役立ちます。

C++ の構造体の構文

構造体の構文は次のとおりです。

struct struct_name
{
// struct data members
}

上記の構文では、struct キーワードが使用されています。 struct_name は構造体の名前です。 構造体のメンバーは中括弧内に追加されます。 これらのメンバーは、おそらく異なるデータ型に属しています。

C++ のクラスとは何ですか?

クラスは、特定の種類のオブジェクトを構築するための設計図または一連の命令です。 これは、現実の実体を中心に展開するオブジェクト指向プログラミングの基本概念です。 でのクラス プログラミング言語 オブジェクトがどのように動作するか、およびオブジェクトに何が含まれるかを決定します。

クラスはユーザー定義のデータ型でもあり、その本体内にさまざまな種類のデータ型とメンバー関数を含めることができます。

C++ のクラスの構文

クラスの構文は次のとおりです。

class class-name
{
// data
// functions
};

上記の構文では、クラス名はクラスに割り当てられた名前です。 データはクラスのメンバーであり、通常は次のように宣言されます。 variables。 ここでの関数はクラス関数です。

C++ における構造とクラス

C++ における構造体とクラスの主な違いは次のとおりです。

Structure CLASS
構造体は、char、float、int などのさまざまなデータ型の論理的に関連するデータ項目を結合するユーザー定義のデータ型です。 クラスは、特定の種類のオブジェクトを構築するための設計図または一連の命令です。
構造体は struct キーワードを使用して宣言できます。 class キーワードを使用して宣言できます。
値型のデータ型です。 参照型のデータ型です。
他の構造体やクラスから継承することはできません。 他の構造体またはクラスから継承できます。
new キーワードを使用せずにオブジェクトをインスタンス化できます。 新しいキーワードを使用してオブジェクトをインスタンス化できます。
構造体のデフォルトのコンストラクターを変更することはできません。 クラスのデフォルトのコンストラクターを変更できます。
構造体にデストラクターを含めることはできません。 クラスにはデストラクターを含めることができます。
構造体では、すべての値の型がスタック上に割り当てられます。 クラスでは、すべての値の型がヒープ上に割り当てられます。
小規模なプログラムで使用されます。 大規模なプログラムで使用されます。
メンバー関数を抽象関数または仮想関数にすることはできません。 メンバー関数は抽象関数または仮想関数にすることができます。
構造体のインスタンスは「構造体変数」と呼ばれます。 クラスのインスタンスはオブジェクトと呼ばれます。
null 値を含めることはできません。 null 値を含めることもできます。
構造体のメンバー変数を直接開始することはできません。 クラスメンバー変数は直接開始できます。
アクセス指定子を宣言していない場合、構造体のメンバーはパブリックです。 アクセス指定子を宣言していない場合、クラスのメンバーはプライベートになります。

どちらを選ぶべきですか?

メモリ使用量が大きい場合、または継承などの概念を使用したい場合は、クラスを選択できます。 一方、この構造体は、デフォルト値の初期化に必要なメモリ フィールドまたはフットプリントが小さい場合に使用できます。