推奨学習: 「c チュートリアル 」
- メソッドの動作は、メソッドオブジェクトの呼び出し。このより複雑な動作はポリモーフィズムと呼ばれ、複数の形式があります。つまり、同じメソッドがコンテキストに応じて異なる動作をします。
仮想は、正しいメソッドまたはメソッドのシーケンスを呼び出すオブジェクトを実装します。
ポリモーフィズムを実現する 2 つのメカニズム:
# 関数を宣言するときにキーワード virtual を使用する場合、これらのメソッドは仮想メソッドと呼ばれます。
<span style="color: #0000ff;">class</span><span style="color: #000000;"> Brass {<br/>private: ...<br/>public:<br/> ...<br/> virtual void ViewAcct() const;<br/> virtual ~Brass(){} }</span>
BrassPlus :
基本クラスは、派生オブジェクトが解放されるときにデストラクターが正しい順序で呼び出されるようにするために、架空の関数を宣言します (仮想関数の役割については後述します)。 。
Brass dom("Dominic Banker", 11224, 4183.45); BrassPlus dot("Dorothy Banker", 12118, 2592.00); dom.ViewAcct(); // use Brass::ViewAcct()dot.ViewAcct(); // use BrassPlus::ViewAcct()
2 つの ViewAcct() プロトタイプは、2 つの独立したメソッド定義があることを示しています。基本クラスのバージョンには修飾名 Brass::ViewAcct() があり、派生クラスのバージョンには修飾名 BrassPlus::ViewAcct() があります。
オブジェクトではなく参照またはポインターによるメソッドの呼び出し:
キーワード virtual が使用されていない場合、プログラムは次の条件に基づいて選択します。参照型またはポインター型 メソッド:
// behavior with non-virtual ViewAcct()// method chosen according to reference typeBrass &b1_ref = dom; Bross &b2_ref = dot; b1_ref.ViewAcct(); // use Brass::ViewAcct()b2_ref.ViewAcct(); // use Brass::ViewAcct()
基本クラスのメソッドを派生クラスで再定義する場合は、通常、基本クラスのメソッドを仮想として宣言する必要があります。こうすることで、プログラムは参照やポインターの種類ではなく、オブジェクトの種類に基づいてメソッドのバージョンを選択します。基本クラスの仮想デストラクターを宣言することも一般的です。仮想デストラクターを使用すると、デストラクターの正しいシーケンスが確実に呼び出されます (つまり、派生クラス オブジェクトから、デストラクターを 1 回呼び出す基本クラス オブジェクトまで)。
基本クラス メソッドの呼び出し: 派生クラス メソッドでは、標準的な手法は、スコープ解決演算子を使用して基本クラス メソッドを呼び出すことです。 Brass::ViewAcct();
// ベース部分の表示<span class="cnblogs_code"> <span style="color: #008000;"></span><span style="color: #008000;"></span></span>
以上がC++ 多態性パブリック継承の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。