什么是多态?
多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。
构成多态的条件
1.有继承关系
2.虚函数的重写
2.通过基类对象的指针或者引用调用虚函数
什么是虚函数
类的成员函数前加上virtual关键字,就构成了虚函数。
虚函数的重写
当在子类定义一个与父类完全相同的虚函数时,我们就称,子类的虚函数重写(覆盖)了父类的虚函数。
重写(也称覆盖),想要构成重写,需要如下几个条件:
1.不在同一个作用域(分别在父类和子类)
2.函数名相同,参数相同,返回值相同(协变除外)
3.基类函数必须带有virtual关键字
4.访问限定符不限
多态实例
#include<iostream>
#include<stdlib.h>
using namespace std;
class Person//父类
{
public:
virtual Person& BuyTicket()
{
cout << "买票全价" << endl;
return *this;
}
virtual ~Person()
{
}
};
class Student : public Person//子类
{
public:
virtual Student& BuyTicket() //重写父类的虚函数
{
cout << "买票半价" << endl;