【发布时间】:2011-08-16 05:06:50
【问题描述】:
我在名为 bankAccount 的基类中有一个名为 balance 的私有数据成员。我希望我的派生类检查帐户能够使用余额,所以我将其设为受保护,但我注意到我的派生类似乎仍然能够访问余额,即使它被放在我的基类的私有部分中。我以为这是不可能的?有谁知道发生了什么?
基类:
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;
}
【问题讨论】:
-
不要从没有虚拟析构函数的基类派生。请。
-
哦,请不要在实际应用程序中将财务数据存储为浮点值。舍入误差肯定会蒸发或创造金钱。
标签: c++ class inheritance