関数継承の概要: C の関数継承は、override キーワードによって実装され、サブクラスが親クラスの関数をオーバーライドできるようになり、ポリモーフィズムが可能になります。つまり、オブジェクトが同じ親クラスに属していても、実行時に異なる動作を示します。 。
#C 関数継承の詳細な説明: ポリモーフィズムの本質オブジェクト指向プログラミングでは、継承は重要なメカニズムであり、これによりサブクラスが関数を継承できるようになります。親クラス データ メンバーとメンバー関数。関数の継承とは、親クラスから子クラスへのメンバー関数の継承を指します。 ポリモーフィズムの概要ポリモーフィズムは、オブジェクトが同じ親クラスに属している場合でも、実行時に異なる動作を可能にするオブジェクト指向プログラミングの重要な概念です。関数の継承はポリモーフィズムを実現する方法の 1 つです。 関数の継承C では、関数の継承はoverride キーワードによって実装されます。子クラスが親クラスと同じ名前とシグネチャを持つ関数を定義すると、その関数には
override のマークが付けられます。これは、サブクラスが親クラスの関数をオーバーライドしていることをコンパイラに伝えます。
class Base { public: virtual void print() { std::cout << "Base class" << std::endl; } }; class Derived : public Base { public: virtual void print() override { std::cout << "Derived class" << std::endl; } };この例では、
Base クラスは
print() 関数を定義し、
Derived クラスは
override## を渡します。 # キーワードはこの関数をオーバーライドします。したがって、Derived
クラス オブジェクトの print()
関数が呼び出されると、「基本クラス」ではなく「派生クラス」が出力されます。 仮想関数
関数は仮想関数である必要があります。仮想関数は virtual
キーワードを使用して宣言されます。これにより、サブクラスが親クラスの関数をオーバーライドできるようになります。上の例では、print()
関数は仮想関数です。 実践的なケース
#include <iostream> class Shape { public: virtual double getArea() = 0; }; class Rectangle : public Shape { public: double width, height; Rectangle(double w, double h) : width(w), height(h) {} double getArea() override { return width * height; } }; class Circle : public Shape { public: double radius; Circle(double r) : radius(r) {} double getArea() override { return 3.14 * radius * radius; } }; int main() { Shape* shapes[] = {new Rectangle(2, 3), new Circle(4)}; for (int i = 0; i < 2; i++) { std::cout << "Area of " << (i == 0 ? "Rectangle" : "Circle") << ": " << shapes[i]->getArea() << std::endl; } return 0; }
この場合、
Shape はシェイプ クラス Base です。クラス、純粋仮想関数 getArea()
を定義します。 Rectangle
クラスと Circle
クラスは Shape
クラスから継承し、getArea()
関数をオーバーライドしてそれぞれの面積を計算します。
関数では、ポリモーフィズムを使用して、基本クラス配列を使用して Rectangle
オブジェクトと Circle
オブジェクトを格納します。 getArea()
関数がオーバーライドされるため、オブジェクト タイプに基づいて正しい領域が印刷されます。 関数の継承とポリモーフィズムを通じて、さまざまな動作を備えた柔軟で拡張可能なプログラムを構築できます。
以上がC++の関数継承を詳しく解説:ポリモーフィズムの本質とは?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。