C++中什么是多态

多态性:

不同类的对象对同一消息的不同响应

如果此时有cat类,dog类,pig类。三种类里面都有show函数,正常显示三种应该怎样做呢?

先将三个类写出来:

然后分别定义出对象,然后再调用show函数:

    cat a; dog b; pig c;
    a.show();
    b.show();
    c.show();

这种就是普通定义的方式,怎样把三种东西合到一块写出来呢?


将三个东西都继承自animal类,然后使用基类和派生类之间类型转换的方式,用派生类转化为基类对象。

如下图所示:

定义出一个基类的数组,然后使用虚函数和类型转换等知识,将不同派生类的对象都存进去。

当逐个处理对象集时,每个对象会根据自己的类型和类的内部知识,自动地知道应该执行哪个版本的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