ポリモーフィズム:
異なるタイプのオブジェクトは、同じメッセージに対して異なる応答をします
この時、猫クラス、犬クラス、豚クラスがあれば。3種類の表示機能がありますが、3種類を正常に表示するにはどうすればよいですか?
最初に3つのカテゴリを記述します。
次に、オブジェクトを個別に定義してから、show関数を呼び出します。
猫a; 犬b; 豚c;
ショー();
b.show();
c.show();
これが普通の定義のやり方ですが、3つをまとめて書き出す方法は?
動物クラスから3つすべてを継承し、基本クラスと派生クラスの間で型変換メソッドを使用して、派生クラスを基本クラスオブジェクトに変換します。
以下に示すように:
基本クラスの配列を定義してから、仮想関数や型変換などの知識を使用して、さまざまな派生クラスのオブジェクトを格納します。
オブジェクトのセットを1つずつ処理する場合、各オブジェクトは、自身のタイプとクラスの内部知識に従って、どのバージョンのshow関数を実行する必要があるかを自動的に認識します。
そのため、異なるオブジェクトが同じメッセージに対して異なる応答を持ちます。
#include<iostream>
using namespace std;
class animal
{
public:
virtual void show()
{
cout << "我是animal类" << endl;
}
};
class dog :public animal
{
public:
void show()
{
cout << "我是dog类" << endl;
}
};
class cat :public animal
{
public:
void show()
{
cout << "我是cat类" << endl;
}
};
class pig :public animal
{
public:
void show()
{
cout << "我是pig类" << endl;
}
};
int main()
{
cat a; dog b; pig c;
animal *x[3] = { &a, &b, &c };
for (int i = 0; i < 3; i++)
{
x[i]->show();
}
system("pause");
return 0;
}