C のポリモーフィズム: 関数のオーバーロードにより、名前は同じだが引数リストが異なる複数の関数が許可され、呼び出されたときの引数の型に基づいて実行される関数が選択されます。関数のオーバーライドを使用すると、派生クラスで基本クラスにすでに存在するメソッドを再定義できるため、オブジェクトの種類に応じてさまざまな種類の動作を実現できます。
#C 関数のオーバーロードと書き換えにおけるポリモーフィズムの具体化
ポリモーフィズムは、オブジェクト指向プログラミングにおける重要な概念です。これにより、異なる型 (派生クラス) のオブジェクトが同じ関数呼び出しに対して異なる応答を行うことができます。 C は、関数のオーバーロードとオーバーライドを通じてポリモーフィズムを実装します。
関数のオーバーロード
関数のオーバーロードとは、名前は同じだがパラメーター リストが異なる複数の関数を指します。コンパイラは、実際に呼び出されるときに、引数の型に基づいて正しい関数を選択します。たとえば、次のコードは、円または長方形の面積を計算できる area()
関数をオーバーロードします。 ##Override 基本クラスに既に存在するメソッドを派生クラスで再定義することを指します。これにより、派生クラスが独自の実装を提供できるようになり、さまざまな種類の動作が可能になります。たとえば、次のコードは、派生クラス
の基本クラス Rectangle の
area() メソッドをオーバーライドして、正方形の面積を計算します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>class Circle {
public:
double area(double radius) {
return 3.14159 * radius * radius;
}
};
class Rectangle {
public:
double area(double length, double width) {
return length * width;
}
};</pre><div class="contentsignin">ログイン後にコピー</div></div>
実際的なケース
基本クラス
と Circle、
Rectangle# を持つグラフィックス ライブラリを考えてみましょう。 ## およびSquare 派生クラス。さまざまなグラフィックを描画する関数
draw() を作成したいと考えています。オーバーロードを使用すると、各形状タイプを処理するための異なる
draw() メソッドを提供できます。
class Rectangle { public: virtual double area(double length, double width) { return length * width; } }; class Square : public Rectangle { public: virtual double area(double side) override { return side * side; } };
draw() メソッドを呼び出すと、C は実際のオブジェクトのタイプに基づいて正しい関数バージョンを確認します。これにより、明示的な変換やキャストを必要とせずに、さまざまなタイプのグラフィックスを処理する汎用コードを作成できるようになります。
以上がC++ 関数のオーバーロードと書き換えにおけるポリモーフィズムの具体化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。