多态
生活中我们是否会见到这样的场景,比如说我们想要去某个景区玩玩,再买票的时候,门口就有着学生半价,成人是全票,小孩免费什么的。对于这种场景,我们肯定不会对每一种人群写一个专门的函数,这样代码的复用性就变得很差。
这个时候就需要使用多态来解决
多态
通俗的来说,多态就是一个事物的多个形态。当我们想要实现某个功能时,对于这个功能的不同对象都有着不同的状态。
这有个常见的例子,就是买票。经常会看的成人全票,学生证半价的情况。针对这种情况,定义两个多态的成员类
class People
{
public:
virtual void BuyTicket()
{
cout << "成人,买全价票" << endl;
}
};
class Student:public People
{
public:
virtual void BuyTicket()
{
cout << "学生,买半价票" << endl;
}
};
函数调用的方法
void Buy(People* Pobj)
{
Pobj->BuyTicket();
}
void text1()
{
People Pobj;
Student Sobj;
//成人
Buy(&Pobj);
//学生
Buy(&Sobj);
}
结果
多态构成条件
- 必须通过父类的指针或者引用调用虚函数
- 被调用的函数必须是虚函数(virtual),并且子类必须对父类的虚函数进行重写
虚函数
被virtual
修饰的类成员函数称为虚函数
class People
{
public:
virtual void