classとstructの違い

1193 ワード

定義:
c言語ではstructはカスタムデータ型です.いくつかの「メンバー」から構成されています.各メンバーは、基本データ型またはユーザーカスタム型のいずれかです.一般的な定義は次のとおりです.
struct    
{
      
};
structがデータ型である以上、関数を定義することはできないに違いないので、プロセス向けcではstructには関数は含まれません.
しかしstructがオブジェクト向けのc++新時代に入ると,その特性が新たに発展し,structはオブジェクトと見なされ,関数を含み,構造関数,構造関数,同様に継承などの能力を持つことができる.
違い:
  • 概要-カッコを使用する初期化
  • classもstructもコンストラクション関数を定義するとカッコで初期化できません
    コンストラクション関数が定義されていない場合、structはカッコで初期化できます.
    コンストラクション関数が定義されず、すべてのメンバー変数がpublicである場合は、カッコで初期化できます.
  • デフォルト継承権限
  • 明確に指定しない場合、classからの継承はprivate継承処理に従い、structからの継承はpublic継承処理に従う.
    デフォルトがpublic継承なのかprivate継承なのかは、ベースクラスではなくサブクラスによって異なります.structはclassを継承することができ、同じclassでも
    structを継承すると、デフォルトの継承アクセス権は、サブクラスがstructを使用しているのかclassを使用しているのかを見ることです.次のようになります.
           struct A{};
          class B : A{};//private継承
          struct C : B{};//public継承
  • メンバーのデフォルトアクセス権
  • classのメンバーのデフォルトはprivate権限、structのデフォルトはpublic権限です.
    class地盤ではstructがネズミを飼って余計なことをした疑いがある.しかし、「C互換性」を考慮するとstructは残されているが、c++のstructとcをどのように互換性を持つのか疑問だ.
    C++をCプログラムに交換するデータをC++プログラムでstructと宣言し、C++のプログラムの意味に基づいてこのstructを継承または集約し、使用するときにこのstructをカプセル化してCに渡すか、CからC++に渡すことができます.
    互換性がよく分からない気がします
    更新を続ける....わかる