関数のオーバーロードと仮想関数を併用すると、親クラスの動作を変更することなく、サブクラスが同じ操作のさまざまな側面をさまざまな方法で実装できるようになります。親クラスで仮想関数を宣言し、子クラスでそれらをオーバーロードすることにより、動的なポリモーフィズムを実現でき、親クラスの参照を通じてさまざまな子クラスの特定の関数を呼び出すことができます。
#C 関数のオーバーロードと仮想関数の組み合わせ
オーバーロードと仮想関数について
として定義されたメンバー関数を使用すると、サブクラスでその実装を再定義できます。
関数のオーバーロードと仮想関数の組み合わせ
C により、仮想関数の使用時にメンバー関数をオーバーロードできます。これにより、サブクラスは、親クラスの動作を変更することなく、同じ操作のさまざまな側面をさまざまな方法で実装できます。実装
親クラスで仮想関数を宣言します:class Parent { public: virtual void doSomething(); };サブクラスで仮想関数をオーバーロードします:
class Child : public Parent { public: @Override void doSomething() { // 子类的特定实现 } };
実際的なケース
次のシナリオを考えてみましょう: を定義する
Shape 親クラスがあります。 virtual 図形を描画する関数。
と
Rectangle という 2 つのサブクラスがあり、どちらも独自の描画方法を持っています。
コード実装:
class Shape { public: virtual void draw() = 0; // 纯虚函数,强制子类实现 }; class Circle : public Shape { public: @Override void draw() { // 绘制圆的具体实现 } }; class Rectangle : public Shape { public: @Override void draw() { // 绘制矩形的具体实现 } }; int main() { vector<Shape*> shapes; shapes.push_back(new Circle()); shapes.push_back(new Rectangle()); for (Shape* shape : shapes) { shape->draw(); // 调用适当的重载函数 } return 0; }このようにして、動的多態性メソッドを作成できます。これにより、親クラスのポインターまたは参照を使用して特定の関数を呼び出すことができます。異なるサブクラス。
以上がC++ 関数のオーバーロードは仮想関数でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。