1

基本クラス:

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()内のメソッドをオーバーライドして使用する方法を見つけることができないようです。この場合、 のほとんどのメソッドをオーバーライドする必要があります。多くの人が を使用しているため、クラスを継承することを学習するポイントが失われているようです。CheckingAccountCheckingAccount::APRSavingsAccountAPR

何か不足していますか?

参照用の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が、最善の解決策が何であるかはわかりません。

4

1 に答える 1