C++ における動的ポリモーフィズムの実装

C++Beginner
オンラインで実践に進む

はじめに

この実験では、C++ におけるポリモーフィズムの概念を実装します。ポリモーフィズムは、オブジェクト指向プログラミングの概念であり、単一の関数をさまざまな方法で使用できることを意味します。ポリモーフィズムには 2 種類あります。コンパイル時ポリモーフィズム(静的ポリモーフィズム)と実行時ポリモーフィズム(動的ポリモーフィズム)です。この実験では、実行時または動的ポリモーフィズムに焦点を当てます。

新しい main.cpp ファイルを作成する

まず、~/project ディレクトリに新しい C++ ファイル main.cpp を作成します。

cd ~/project
touch main.cpp

ポリモーフィズムを実装するためのコードを追加する

このステップでは、Shape という名前のクラスを作成します。Shape クラスには、area() という名前の仮想関数があります。次に、Shape クラスを継承し、仮想 area() 関数をオーバーライドする RectangleTriangle の 2 つのクラスを作成します。クラスを作成したら、Shape クラスのオブジェクトの配列を作成し、その配列をループして各オブジェクトの area() 関数を呼び出します。

#include <iostream>
using namespace std;

class Shape {
    public:
        virtual float area() {
            return 0;
        }
};

class Rectangle: public Shape {
    public:
        float area() {
            cout << "Rectangle class area()" << endl;
            return 0;
        }
};

class Triangle: public Shape {
    public:
        float area() {
            cout << "Triangle class area()" << endl;
            return 0;
        }
};

int main() {
    Shape *shape;
    Rectangle rec;
    Triangle tri;

    shape = &rec;
    shape->area();

    shape = &tri;
    shape->area();

    return 0;
}

コードをコンパイルして実行する

このステップでは、以下のコマンドを使用してコードをコンパイルして実行します。

$ g++ main.cpp -o main
$./main

上記のプログラムの出力は以下の通りです。

Rectangle class area()
Triangle class area()

まとめ

この実験では、C++ におけるポリモーフィズムの概念をどのように実装するかを学びました。Shape という名前の仮想関数を持つクラスを作成しました。次に、Shape クラスを継承し、仮想関数 area() をオーバーライドする RectangleTriangle の 2 つのクラスを作成しました。最後に、RectangleTriangle クラスのオブジェクトを作成し、基底クラス Shape のオブジェクトを使用して area() 関数を呼び出しました。これにより、それぞれのクラスの関数が呼び出されました。