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

937 ワード

structとclassの違い:
  • デフォルトの継承アクセス権(structデフォルトはpublic、classデフォルトはprivate)
  • classはテンプレートパラメータを定義するために使用することができ、structはテンプレートパラメータ
  • を定義するために使用しない.
    説明する
    1、継承アクセスが異なる
    //   A
    struct A{
    	int a; //   public
    }
    
    //   B   A
    struct B:A{
    	int b;
    }
    

    以上、構造体BがAを継承する場合、publicが継承する.
    同じ理屈:
    // C
    class C{
    	int c; //   private
    }
    
    // D    C
    class D:C{
    	int d;
    }
    

    以上、クラスDがクラスCを継承する場合、private継承となります.
    注意:クラスと構造体は互いに継承できます.
  • class C:A//private継承
  • struct A:C//public継承
  • まとめ:継承アクセス権がpublic継承かprivate継承かは、サブクラスによって異なります.
    キー:structはデータ構造のインプリメンテーションとして、デフォルトのデータアクセス制御はpublicであり、classはオブジェクトのインプリメンテーションとして、デフォルトのメンバー変数アクセス制御はprivateである.
    したがって、structを定義するときに直接値を割り当てることができ、classを定義することはできません.
    2、テンプレートパラメータ定義
    template//正しいtemplate//エラー
    リファレンス
    https://www.cnblogs.com/starfire86/p/5367740.html