人吃饭
#include <bits/stdc++.h>
using namespace std;
class Person {
public:
virtual void eat() = 0;
virtual void pay() = 0;
};
class Chinese : public Person {
public:
Chinese() {
cout << "中国人进入餐厅" << endl;
}
~Chinese() {
cout << "中国人离开餐厅" << endl;
}
void eat() {
cout << "中国人用筷子吃饭" << endl;
}
void pay() {
cout << "中国人用微信支付" << endl;
}
};
class American : public Person {
public:
American() {
cout << "美国人进入餐厅" << endl;
}
~American() {
cout << "美国人离开餐厅" << endl;
}
void eat() {
cout << "美国人用叉子吃饭" << endl;
}
void pay() {
cout << "美国人用信用卡支付" << endl;
}
};
class Indian : public Person {
public:
Indian() {
cout << "印度人进入餐厅" << endl;
}
~Indian() {
cout << "印度人离开餐厅" << endl;
}
void eat() {
cout << "印度人用手吃饭" << endl;
}
void pay() {
cout << "印度人用现金支付" << endl;
}
};
void processMeal(Person& p) {
p.eat();
p.pay();
}
int main() {
Person* p = 0;
Chinese c;
American a;
Indian i;
p = &c;
processMeal(*p);
p = &a;
processMeal(*p);
p = &i;
processMeal(*p);
return 0;
}