2.10(Account继承层次)创建一个银行账户的继承层次,表示银行的所有客户账户。所有的 客户都能在他们的银行账户存钱、取钱,但是账户也可以分成更具体的类型。例如,一方面存款账户SavingsAccount依靠存款生利;另一方面,支票账户CheckingAccount对每笔交易(即存款或取款)收取费用。 创建一个类层次,以Account作为基类,SavingsAccount 和CheckingAccount作为派生类。基类Account应该包括一个double类型的数据成员balance,表示账户
时间: 2024-03-17 11:47:29 浏览: 31
的余额,以及公共成员函数deposit和withdraw,分别用于存钱和取钱操作。SavingsAccount类应该有一个double类型的利率数据成员,并且重写基类的withdraw函数,以便在取款时扣除一定的利息。CheckingAccount类应该有一个double类型的交易费用数据成员,并且重写基类的withdraw函数,以便在取款时扣除一定的交易费用。以下是一个可能的实现代码示例:
```
class Account {
protected:
double balance;
public:
Account(double initialBalance = 0.0) {
balance = initialBalance;
}
void deposit(double amount) {
balance += amount;
}
virtual void withdraw(double amount) {
balance -= amount;
}
};
class SavingsAccount : public Account {
private:
double interestRate;
public:
SavingsAccount(double initialBalance = 0.0, double rate = 0.0)
: Account(initialBalance) {
interestRate = rate;
}
void withdraw(double amount) {
balance -= amount + (amount * interestRate);
}
};
class CheckingAccount : public Account {
private:
double transactionFee;
public:
CheckingAccount(double initialBalance = 0.0, double fee = 0.0)
: Account(initialBalance) {
transactionFee = fee;
}
void withdraw(double amount) {
balance -= amount + transactionFee;
}
};
```
在这个实现中,Account类是基类,SavingsAccount和CheckingAccount是派生类。每个类都有自己的构造函数,用于初始化数据成员。SavingsAccount和CheckingAccount类都重写了基类的withdraw函数,以实现不同的取款逻辑。