多态性:
不同类的对象对同一消息的不同响应
如果此时有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;
}