创建一个抽象类 Card,包含以下成员函数: 构造函数:用于初始化卡的信息 充值函数:用于向卡内充值金额 余额查询函数:用于查询卡内的余额 刷卡消费函数:用于在刷卡时扣除相应的金额 纯虚函数:用于完成刷卡种类显示和设置折扣率的操作 创建三个派生类 OldCard、StudentCard 和 NormalCard,分别表示老年卡、学生卡和普通卡。这三个类都从 Card 类派生而来,并重写 Card 类的纯虚函数,用于设置不同的折扣率。 在主函数中,创建一个 Card 类的指针数组,并分别初始化为 OldCard、StudentCard 和 NormalCard 类的对象。读入用户输入的卡类型,根据不同的卡类型显示不同的卡类,并调用相应的刷卡消费函数。
时间: 2023-02-16 16:56:58 浏览: 96
下面是一个可以实现上述功能的 C++ 代码示例:
```
// 定义抽象类 Card
class Card {
public:
// 构造函数
Card(int id, int balance) : id_(id), balance_(balance) {}
// 析构函数
virtual ~Card() {}
// 充值函数
void Recharge(int amount) { balance_ += amount; }
// 余额查询函数
int GetBalance() const { return balance_; }
// 刷卡消费函数
void Pay(int amount) { balance_ -= amount; }
// 纯虚函数:完成刷卡种类显示和设置折扣率的操作
virtual void DisplayType() const = 0;
virtual double GetDiscountRate() const = 0;
private:
int id_;
int balance_;
};
// 定义老年卡类 OldCard,继承自 Card 类
class OldCard : public Card {
public:
OldCard(int id, int balance) : Card(id, balance) {}
~OldCard() {}
void DisplayType() const { cout << "老年卡" << endl; }
double GetDiscountRate() const { return 0.8; }
};
// 定义学生卡类 StudentCard,继承自 Card 类
class StudentCard : public Card {
public:
StudentCard(int id, int balance) : Card(id, balance) {}
~StudentCard() {}
void DisplayType() const { cout << "学生卡" << endl; }
double GetDiscountRate() const { return 0.9; }
};
// 定义普通卡类 NormalCard,继承自 Card 类
class NormalCard : public Card {
public:
NormalCard(int id, int balance) : Card(id, balance) {}
~NormalCard() {}
void DisplayType() const { cout << "普通卡" << endl; }
double GetDiscountRate() const { return 1.0; }
};
int main() {
// 创建指针数组,并分别初始化为 OldCard、StudentCard 和 NormalCard 类的对象
Card* cards[3] = {new OldCard(1, 100), new StudentCard(2, 200), new NormalCard(3, 300)};
// 读入用户输入的卡类
阅读全文