はじめに
この実験では、C++ におけるポリモーフィズムの概念を実装します。ポリモーフィズムは、オブジェクト指向プログラミングの概念であり、単一の関数をさまざまな方法で使用できることを意味します。ポリモーフィズムには 2 種類あります。コンパイル時ポリモーフィズム(静的ポリモーフィズム)と実行時ポリモーフィズム(動的ポリモーフィズム)です。この実験では、実行時または動的ポリモーフィズムに焦点を当てます。
この実験では、C++ におけるポリモーフィズムの概念を実装します。ポリモーフィズムは、オブジェクト指向プログラミングの概念であり、単一の関数をさまざまな方法で使用できることを意味します。ポリモーフィズムには 2 種類あります。コンパイル時ポリモーフィズム(静的ポリモーフィズム)と実行時ポリモーフィズム(動的ポリモーフィズム)です。この実験では、実行時または動的ポリモーフィズムに焦点を当てます。
まず、~/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()
関数を呼び出しました。これにより、それぞれのクラスの関数が呼び出されました。