Я разработал систему банковских счетов разных учетных записей. Мой базовый класс - это учетная запись, а производные классы - это проверка, сбережения, MoneyMarket. Последние три наследуют частную переменную «баланс» от учетной записи. Все счетам необходимо поддерживать и изменять свой собственный баланс.Использование переменной переменной частного класса и производного класса
Однако я смущен в отношении баланса между балансом счета и балансом производного класса.
Как вы можете видеть в getBalance(), Checking's, он вынужден использовать getBalance() из-за частной переменной, и код работает только при отображении Account :: balance. Это кажется очень странным, что он должен уравновесить баланс Пользователя, чтобы отобразить его собственный.
Обратите внимание, что все общедоступные методы учетной записи являются виртуальными, чтобы разрешить переопределение.
Почему это работает так, как есть? Разве производные классы не должны называть свою собственную копию «баланса»?
Примечание: этот код работает и корректно отображает точный измененный баланс для каждого объекта. Ниже Checking.cpp:
#include <iostream>
#include <iomanip>
#include "Checking.h"
using namespace std;
Checking::Checking() {setBalance(500); }
Checking::~Checking() {setBalance(0);}
void Checking::Withdrawal(double p_withdrawal){
setBalance(getBalance(0) - p_withdrawal);
cout << setprecision(2) << fixed;
cout<<"\nWithdrawal from Checking leaves balance: "<<getBalance(0);
}
double Checking::getBalance(bool print){
if (print==1)
cout<<"\nBalance of Checking:"<< Account::getBalance(0);
return Account::getBalance(1);
}
И Account.h:
#ifndef ACCOUNT_H
#define ACCOUNT_H
using namespace std;
class Account{
public:
Account();
~Account();
virtual double getBalance(bool);
virtual void setBalance(double);
virtual void Deposit(double);
virtual void Withdrawal(double);
virtual void Transfer(Account&, Account&, double);
private:
double balance;
};
#endif
«Все четыре счета должны поддерживать и изменять свой собственный баланс». Зачем? Что случилось с унаследованным? Я никогда не слышал о банковском счете с более чем одним балансом. – molbdnilo
Привет. Точно так же, как у учетной записи Checking and Savings есть собственный баланс, так и сделайте это. Вы правы, каждый имеет только один баланс. Мой вопрос о том, какая копия «balance» CheckButance вызывается. – Student
@ user2786217 'getBalance' вызывает' getBalance' 'Account', который обращается к« балансу »экземпляра' Account', который является частью экземпляра 'Checking', на который вы вызываете функцию. – user2079303