はじめに
この実験では、C++ におけるポリモーフィズムの概念を実装します。ポリモーフィズムは、オブジェクト指向プログラミングの概念であり、単一の関数をさまざまな方法で使用できることを意味します。ポリモーフィズムには 2 種類あります。コンパイル時ポリモーフィズム(静的ポリモーフィズム)と実行時ポリモーフィズム(動的ポリモーフィズム)です。この実験では、実行時または動的ポリモーフィズムに焦点を当てます。
新しい main.cpp ファイルを作成する
まず、~/project ディレクトリに新しい C++ ファイル main.cpp を作成します。
cd ~/project
touch main.cpp
ポリモーフィズムを実装するためのコードを追加する
このステップでは、Shape という名前のクラスを作成します。Shape クラスには、area() という名前の仮想関数があります。次に、Shape クラスを継承し、仮想 area() 関数をオーバーライドする Rectangle と Triangle の 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() をオーバーライドする Rectangle と Triangle の 2 つのクラスを作成しました。最後に、Rectangle と Triangle クラスのオブジェクトを作成し、基底クラス Shape のオブジェクトを使用して area() 関数を呼び出しました。これにより、それぞれのクラスの関数が呼び出されました。



