ホームページ  >  記事  >  バックエンド開発  >  C++の関数継承を詳しく解説:ポリモーフィズムの本質とは?

C++の関数継承を詳しく解説:ポリモーフィズムの本質とは?

WBOY
WBOYオリジナル
2024-05-04 21:30:021088ブラウズ

関数継承の概要: C の関数継承は、override キーワードによって実装され、サブクラスが親クラスの関数をオーバーライドできるようになり、ポリモーフィズムが可能になります。つまり、オブジェクトが同じ親クラスに属していても、実行時に異なる動作を示します。 。

C++ 函数继承详解:多态的本质是什么?

#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() 関数をオーバーライドしてそれぞれの面積を計算します。

main()

関数では、ポリモーフィズムを使用して、基本クラス配列を使用して Rectangle オブジェクトと Circle オブジェクトを格納します。 getArea() 関数がオーバーライドされるため、オブジェクト タイプに基づいて正しい領域が印刷されます。 関数の継承とポリモーフィズムを通じて、さまざまな動作を備えた柔軟で拡張可能なプログラムを構築できます。

以上がC++の関数継承を詳しく解説:ポリモーフィズムの本質とは?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。