関数の継承により、派生クラスが基本クラスの関数を継承して再利用できるようになります。仮想関数を使用すると、コードの再利用が可能になり、派生クラスが基本クラスの同じ名前の関数をオーバーライドし、呼び出し元オブジェクトのタイプに基づいて異なる関数バージョンを動的に実行できます。
# C 関数継承の詳細な説明: 仮想関数を使用してコードの再利用を実現する方法
はじめに
関数の継承はオブジェクト指向プログラミング (OOP) における重要な手法であり、派生クラスが基本クラスの関数を継承して再利用できるようになります。仮想関数を使用すると、より柔軟でスケーラブルなコードの再利用が実現できます。仮想関数とは何ですか?
仮想関数は、派生クラスが基本クラスの同じ名前の関数をオーバーライドできるようにする特別なメンバー関数です。仮想関数が呼び出されるとき、実行される実際の関数のバージョンは、呼び出し元のオブジェクト タイプに基づいて動的に決定されます。構文
仮想関数は、キーワードvirtual を使用して宣言されます。例:
class Base { public: virtual void print() const; // 虚函数 };
コードの再利用
仮想関数を使用することで、コードの再利用を実現できます。たとえば、draw() 関数を含む基本クラス
Shape があるとします。
class Shape { public: virtual void draw() const; };
Circle などのさまざまな Shape クラスを派生できます。 と
Rectangle を作成し、それぞれの形状に対して独自の
draw() 関数を実装します。
class Circle : public Shape { public: void draw() const override; }; class Rectangle : public Shape { public: void draw() const override; };
を作成するとき
Circle と Rectangle オブジェクトが呼び出され、その
draw() 関数が呼び出されると、対応する派生クラス関数が実行されて、さまざまな描画動作が実現されます。
実際的なケース
次のコード スニペットについて考えてみましょう。これは、仮想関数を使用してコードの再利用を実現する方法を示しています。
#include <iostream> using namespace std; class Shape { public: virtual void draw() const { cout << "Drawing a generic shape" << endl; } }; class Circle : public Shape { public: void draw() const override { cout << "Drawing a circle" << endl; } }; class Rectangle : public Shape { public: void draw() const override { cout << "Drawing a rectangle" << endl; } }; int main() { Shape* shapes[] = {new Circle(), new Rectangle()}; for (int i = 0; i < 2; i++) { shapes[i]->draw(); } return 0; }
Drawing a circle Drawing a rectangle
Shape
クラスが基本クラスであり、仮想関数draw() が含まれています。
Circle と
Rectangle は、
draw() 関数をオーバーライドして形状固有の描画動作を提供する派生クラスです。仮想関数を使用すると、特定の型を知らなくても、さまざまな形状の
draw() 関数を簡単に呼び出すことができます。
以上がC++ 関数継承の詳細説明: 仮想関数を使用してコードの再利用を実現するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。