C++における構造体とクラスの違い(structとclassの違い)
937 ワード
structとclassの違い:デフォルトの継承アクセス権(structデフォルトはpublic、classデフォルトはprivate) classはテンプレートパラメータを定義するために使用することができ、structはテンプレートパラメータ を定義するために使用しない.
説明する
1、継承アクセスが異なる
以上、構造体BがAを継承する場合、publicが継承する.
同じ理屈:
以上、クラス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
説明する
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継承となります.
注意:クラスと構造体は互いに継承できます.
キー:structはデータ構造のインプリメンテーションとして、デフォルトのデータアクセス制御はpublicであり、classはオブジェクトのインプリメンテーションとして、デフォルトのメンバー変数アクセス制御はprivateである.
したがって、structを定義するときに直接値を割り当てることができ、classを定義することはできません.
2、テンプレートパラメータ定義
template//正しいtemplate//エラー
リファレンス
https://www.cnblogs.com/starfire86/p/5367740.html