C ++のポリモーフィズムとは

ポリモーフィズム:

異なるタイプのオブジェクトは、同じメッセージに対して異なる応答をします

この時、猫クラス、犬クラス、豚クラスがあれば。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;
}

 

おすすめ

転載: blog.csdn.net/qq_46423166/article/details/112384884