# include <iostream>
using namespace std;
//虚函数实现多态(基类函数声明前加virtual,派生类即可重新定义该虚函数):人买票程序,上来一人(学生、老师不知道反正是人),买票行为不同
class Human
{
public:
virtual void buyT() //在基类的函数声明前加virtual,此函数就成为虚函数,派生类即可对虚函数重新定义
{
cout<<"human买票"<<endl;
}
private:
};
class Student: public Human
{
public:
virtual void buyT() //派生类中对基类的虚函数重新定义
{
cout<<"STU买票:刷卡"<<endl;
}
};
class Teacher: public Human
{
public:
virtual void buyT() //派生类中对基类的虚函数重新定义
{
cout<<"TEA买票:投币"<<endl;
}
};
int main()
{
Human* passenger = NULL; //上来一个人
passenger = new Teacher(); //如果上来的人是teacher,创建一个teacher对象
passenger->buyT(); //teacher买票行为:投币
delete passenger;
passenger = new Student(); //如果上来的人是student,创建一个student对象
passenger->buyT(); //student买票行为:刷卡
delete passenger;
passenger = NULL;
return 0;
}