継承時の同名のメンバ変数の扱い方
1. サブクラスのメンバ変数が親クラスのメンバ変数と同じ名前の場合
2. サブクラスは同じ名前のメンバを継承します。親クラス
3. サブクラス Discriminator:: のスコープを通じて、同じ名前のメンバーを区別します (クラス名修飾子を明示的に使用して、派生クラスで同じ名前の基本クラスのメンバーを使用します)
4 . 同じ名前のメンバーはメモリ内の異なる場所に保存されます
2. 継承と static キーワードが派生クラスの static キーワードと結合されるとどうなりますか?
理論知識
Ø 基本クラスで定義された静的メンバーは、すべての派生クラスで共有されます
Ø 静的メンバー自体のアクセス特性と派生クラスの継承方法に応じて、静的メンバーは、クラス階層 (派生クラスのアクセス制御に従う)
Ø 派生クラスの静的メンバーにアクセスするには、
クラス名::メンバー
の形式を使用するか、オブジェクト メンバー
を介してオブジェクト名にアクセスします。
概要: 静的関数は 3 つのアクセス原則にも準拠します
2> 静的関数は間違いを犯しやすいです (初期化する必要があるだけでなく、より重要なのは、明示的に初期化する必要があることです)コンパイラにメモリを割り当てるように指示します)
3> コンストラクターはデフォルトで private になります
多継承の概念
Ø クラスが複数の直接基本クラスを持つ継承関係は多重継承と呼ばれます
Ø 多重継承宣言構文
class派生クラス名: アクセス制御基本クラス名 1, アクセス制御基本クラス名 2, …, アクセス制御基本クラス名 n
{
データメンバーとメンバー関数宣言
}; クラス C は、次のメンバーを継承できます。アクセス制御に基づいてクラス A とクラス B を同時に作成し、
独自のメンバーを追加
派生クラスの構築と多重継承によるアクセス
Ø 実行順序は、単一継承コンストラクターの実行順序と似ています。複数の直接基本クラス コンストラクターが実行される順序は、派生クラスを定義するときに継承された各基本クラスが指定される順序によって異なります。
Ø 派生クラス オブジェクトには、複数の直接または間接の基本クラス メンバーが含まれます。異なる名前のメンバーにアクセスするときに、曖昧さはなくなります。異なる基本クラスに同じ名前のメンバーがある場合、派生クラス オブジェクトにアクセスするときにそれらを識別する必要があります。
2つの仮想継承
派生クラスが複数の基底クラスから派生し、これらの基底クラスが共通の基底クラスを持つ場合、基底クラスで宣言された名前にアクセスするときに、曖昧さの可能性があります
分析:
基本クラスを持つ場合、基底クラスで宣言された名前がアクセスされるとき、ペアで,
曖昧さが発生する可能性があります
Ø 複数の継承パス上に共通の基底クラスがある場合、継承パスの
収束点のどこかで、この共通の基底クラスはオブジェクト内に複数の基底クラスのサブオブジェクトを生成します派生クラス
Ø この公開基底クラスが派生クラス内で 1 つのサブオブジェクトのみを生成するようにするには、この基底クラス
を仮想継承として宣言し、基底クラス クラスが仮想基底クラスになるようにする必要があります。
Ø 仮想継承宣言では、キーワード virtual を使用します
実験: virtual キーワードを増やした後のコンストラクター呼び出しの数に注意してください。
3 つの継承の概要
Ø 継承は、オブジェクト指向プログラミングでソフトウェアの再利用を実現するための重要な方法です。プログラマは、既存の基本クラスに基づいて新しい派生クラスを定義できます。
Ø 単一継承を持つ派生クラスには、基本クラスが 1 つだけあります。多重継承のある派生クラスには複数の基本クラスがあります。
Ø 基本クラスのメンバーに対する派生クラスのアクセスは、継承メソッドとメンバーのプロパティによって決まります。
Ø 派生クラス オブジェクトを作成するときは、まず基本クラスのコンストラクターを呼び出して、派生クラスの基本クラスのメンバーを初期化します。デストラクターが呼び出される順序は、コンストラクターが呼び出される順序の逆になります。
Ø C++ は、クラス継承関係におけるメンバー アクセスの曖昧さを防ぐための仮想継承メカニズムを提供します。
Ø 多重継承はソフトウェア再利用の強力な機能を提供しますが、プログラムの複雑さも増加します。
上記は、C++ レビューの要点の 9 回目の要約 - 継承 2 です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。