基本クラス:
class SavingsAccount
{
public:
void AddInterest(); // add interest to balance based on APR (interest rate)
private:
static double APR;
double Balance;
}
class CheckingAccount: public SavingsAccount
{
private:
static double APR;
}
簡単にするために、無関係なメンバー/メソッドなどを省略しました。
したがって、状況は次のとおりです。 aCheckingAccount
は a と同じように動作するSavingsAccount
必要がありますが、APR (利率) が異なる必要があります。すべてSavingsAccounts
が同じものを共有しAPR
、すべてCheckingAccounts
が独自のものを共有しAPR
ます (したがって、変数は静的です)。これは割り当て用であり、s には静的メンバー変数を使用することが期待されていますAPR
。
私の調査とテストから、クラスAddInterest()
内のメソッドをオーバーライドして使用する方法を見つけることができないようです。この場合、 のほとんどのメソッドをオーバーライドする必要があります。多くの人が を使用しているため、クラスを継承することを学習するポイントが失われているようです。CheckingAccount
CheckingAccount::APR
SavingsAccount
APR
何か不足していますか?
参照用のAddInterest()
方法:
SavingsAccount::AddInterest()
{
double interest = (this->APR/100)/12 * this->getBalance();
this->setBalance(this->getBalance() + interest);
}
編集: (で APR をオーバーライドする前に) 私が遭遇した元の問題CheckingAccount
は次のとおりです。
int main()
{
SavingsAccount sav;
CheckingAccount chk;
sav.setAPR(0.2);
chk.setAPR(0.1);
cout << sav.getAPR() << endl; // OUTPUTS "0.1"!!
return 0;
}
CheckingAccount
オブジェクトの APR を変更するAPR
と、オブジェクトの が変更されSavingsAccount
ます! これは静的であるため、私には理にかなっていますAPR
が、最善の解決策が何であるかはわかりません。