У меня есть личный элемент данных с именем balance в базовом классе, который называется bankAccount. Я хотел, чтобы мой производный класс CheckAccount мог использовать баланс, поэтому я сделал его защищенным, но я заметил, что мой производный класс, по-видимому, все еще имеет доступ к балансу, даже если он помещен в закрытый раздел моего базового класса. Я думал, что это невозможно? Кто-нибудь знает, что будет дальше?
Базовый класс:
class bankAccount
{
public:
bankAccount();
void setAccountInfo(int accountNumTemp, double balanceTemp);
void applyTransaction(char accountType, char transactionTypeTemp, int amountTemp, int j);
private:
int accountNumber;
double balance;
};
Производный класс:
class checkingAccount: public bankAccount
{
public:
checkingAccount();
double applyTransaction(char transactionTypeTemp, int amountTemp, int c, double balance);
private:
float interestRate;
int minimumBalance;
float serviceCharge;
};
член функции базового класса, где член функции производного класса получает рассматриваемый элемент данных:
void bankAccount:: applyTransaction(char accountType, char transactionTypeTemp, int amountTemp, int j)
{
int c;
c = j;
checkingAccount ca;
balance = ca.applyTransaction(transactionTypeTemp, amountTemp, c, balance);
}
Член функции производного класса, в котором используется закрытый член данных базового класса:
double checkingAccount:: applyTransaction(char transactionTypeTemp, int amountTemp, int c, double balance)
{
if (transactionTypeTemp == 'D')
{
balance = balance + amountTemp;
}
else if (transactionTypeTemp == 'W')
{
if (balance < amountTemp)
{
cout << "error: transaction number " << c + 1 << " never occured due to insufficent funds." << endl;
}
else
{
balance = balance - amountTemp;
if(balance < minimumBalance) //if last transaction brought the balance below minimum balance
{
balance = (balance - serviceCharge); //apply service charge
}
}
}
return balance;
}