我有一个名为bankAccount的基类中称为余额的私有数据成员。我想我的派生类checkingAccount能够使用余额,所以我使它受到保护,但我注意到,即使将它放在我的基类的私有部分中,我的派生类似乎仍能够访问余额。我认为这是不可能的?有谁知道可能会发生什么?基类的私有数据成员如何被派生类访问?
基类:
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;
}
**不要从没有虚拟析构函数的基类派生**请。 – 2011-04-30 20:39:34
哦,请不要将财务数据作为浮点值存储在实际应用程序中。舍入误差肯定会蒸发或创造金钱。 – 2011-04-30 20:50:44