目录
1. 多态的概念
多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态,比如我们买火车票,学生买票和军人买票和成年人买票的价格不一样这就是多态
2.买票系统模拟实现
在实现前先了解一下覆盖,// 虚函数 + 函数名/参数/返回值 相同等于 重写或者覆盖
class Person {
public:
// 虚函数
virtual void BuyTicket() {
cout << "Person:买票-全价 100¥" << endl; }
protected:
};
class Student : public Person {
public:
// 虚函数 + 函数名/参数/返回值 -》 重写/覆盖
virtual void BuyTicket() {
cout << " Student:买票-半价 50 ¥" << endl; }
};
class Soldier : public Person {
public:
// 虚函数 + 函数名/参数/返回值 -》 重写/覆盖
virtual void BuyTicket() {
cout << " Soldier:优先买预留票-88折 88 ¥" << endl; }
};
void Pay(Person* ptr)
{
ptr->BuyTicket();
}
int main()
{
Person p;
Student s;
Soldier st;
int option = 0;
cout << "=======================================" << endl;
do
{
cout << "请选择身份:";
cout << "1、普通人 2、学生 3、军人" << endl;
cin >> option;
switch (option)
{
case 1:
{
p.BuyTicket();
break;
}
case 2:
{
s.BuyTicket();
break;
}
case 3:
{
st.BuyTicket();
break;
}
default:
cout << "输入错误,请重新输入" << endl;
break;
}
cout << "=======================================" << endl;
} while (option != -1);
return 0;
}
运行结果
但是这个没有实名制,就是名字,身份证之类的都没有
再写之前了解下多态
多态两个要求:
1、子类虚函数重写的父类虚函数 (重写:三同(函数名/参数/返回值)+虚函数)
2、父类指针或者引用去调用虚函数。
#include<iostream>
using namespace std;
class Person
{
public:
Person(const char* name)
:_name(name)
{
}
// 虚函数
virtual void BuyTicket() {
cout << _name << "Person:买票-全价 100¥" << endl; }
protected