クラスの C++ 継承と静的メンバー

継承とは

継承 (inheritance) メカニズムは、オブジェクト指向プログラミングでコードを再利用可能にするための最も重要な手段であり、プログラマーが元のクラスの特性を維持することに基づいて機能を拡張および追加できるようにします。このようにして生成された新しいクラスを派生クラス(またはサブクラス) と呼び、継承されたクラスを基底クラス (または親クラス) と呼びます。

方言とは、A と B の 2 つのクラスがあることを意味します。クラス B がクラス A を継承するとします。次に、クラス B をクラス A に基づいて拡張し、機能を増やすことができます。すると、この時点でクラス B がサブクラス (派生クラス) になり、クラス A がクラス B の親クラス (基底クラス) になります。

継承後、クラス B はクラス A のすべてのメンバーとメンバー関数を継承できますか? 継承ルールについてお話しします。

C++ 継承規則:

継承には次の 3 つのタイプがあります。 public: protected: private:

class B :public A

class B :protected A

class B :private A

パブリック継承の場合: 継承の場合、基底クラスの各メンバーの属性は変更されずに保持され、基底クラスのプライベート メンバーは非表示になります。派生クラスのメンバーは、基本クラスの public/protected メンバーにのみアクセスできますが、private メンバーにはアクセスできません。派生クラスのオブジェクトは、基本クラスの public メンバーにのみアクセスできます。

保護された継承の場合: 継承すると、基底クラスの各メンバー属性が非公開になり、基底クラスの非公開メンバーが非表示になります。派生クラスのメンバーは、基本クラスのpublic/ protectedメンバーにのみアクセスできますが、プライベート メンバーにはアクセスできません。派生クラスのオブジェクトは、基本クラスのメンバーにアクセスできません。

プライベートの場合: 継承: 継承すると、基本クラスの各メンバー属性がプライベートになり、基本クラスのプライベート メンバーは非表示になります。派生クラスのメンバーは、基本クラスのpublic/ protectedメンバーにのみアクセスできますが、プライベート メンバーにはアクセスできません。派生クラスのオブジェクトは、基本クラスのメンバーにアクセスできません。

継承の定義: 

 ここに画像の説明を挿入

1. 基本クラスのプライベート メンバーは、継承方法に関係なく、派生クラスには表示されません。ここでの不可視性とは、基本クラスのプライベート メンバーが引き続き派生クラス オブジェクトに継承されることを意味しますが、派生クラス オブジェクトは、クラスの内部または外部に関係なく、アクセスできないように文法的に制限されます。
2. 基底クラスのプライベート メンバーは派生クラスではアクセスできない 基底クラス メンバーが派生クラスの外部で直接アクセスされることを望まないが、派生クラスでアクセスする必要がある場合、保護されていると定義されます。保護されたメンバー修飾子は継承によるものであることがわかります。
3. 基本クラスのプライベート メンバーはサブクラスでは表示されません。サブクラスの基本クラスの他のメンバーのアクセス メソッドは、アクセス修飾子と継承メソッドでより少ない権限を持つものです (権限の並べ替え: public>protected>プライベート)。
4. キーワード class を使用する場合、デフォルトの継承方法は private であり、struct を使用する場合、デフォルトの継承方法は public ですが、継承方法を明示的に記述するのが最善です。
5. 実際の使用では、パブリック継承が一般的に使用されます.プロテクト/プライベート継承はめったに使用されず、プロテクト/プライベート継承メンバーは派生クラスでのみ使用できるため、プロテクト/プライベート継承の使用は推奨されません.また、メンテナンスは行われません.強い。

クラスの静的メンバー:


    復習: C での static static
        関数 1: 変更された変数は static ストレージ領域に格納され、1 回だけ初期化されます
        関数 2: スコープ拡張を制限する extern
    
    通常メンバー:  
        メンバー変数: クラスの各オブジェクトには独自のメンバー変数があります
        メンバー関数: クラスごとオブジェクトは
    、オブジェクト名を介してメンバー関数クラスの静的メンバーにアクセスできます:
        クラスに属していますが、オブジェクトに属していません!    
        静的メンバー変数: クラスのすべてのオブジェクトは、同じ静的メンバー変数を共有します。
            コンストラクターではなく、クラスの外部でのみ初期化できます。
例: 男性、女性
    すべての既婚女性にはそれぞれの夫がいる 一般会員
    静的会員 すべての女性の夫である男性は世界に 1 人しかいない

    静的メンバー関数は、非静的メンバー変数にアクセスできません。
    静的メンバー関数は、オブジェクト名だけでなく、クラス名でも呼び出すことができます。

おすすめ

転載: blog.csdn.net/makabaka12138/article/details/128584417
おすすめ