1.概念:
同一个事物在不同场景下所要表演出的不同状态(通俗点讲,就是见人说人话,见鬼说鬼话)
举个例子,比如买票这个行为,普通人买票,是全价买票,学生买票时半价买票,军人的话,优先买票。
2.实现多态的条件
必须是在继承的体系中
>>基类中必须要有虚函数(被virtual修饰的成员函数)而且派生类必须要对基类中的虚函数进行重写
>>虚函数调用:必须要通过基类的指针或引用虚函数
两个条件缺一不可
多态实现(以买票为例):
#include<iostream>
using namespace std;
class person
{
public:
virtual void buyticket()
{
cout << "买票" << endl;
}
};
class str : public person
{
public:
void buyticket()
{
cout << "半价买票" << endl;
}
};
class sol : public person
{
public:
void buyticket()
{
cout << "优先买票" << endl;
}
};
void buy(person &k)
{
k.buyticket();
}
int main()
{
person s1;
str s2;
sol s3;
buy(s1);
buy(s2);
buy(s3);
return 0;
}
定义三个类的对象,根据对象所属类的不同,调用不同类型的买票函数
这就是多态的实现