gpt4 book ai didi

c++ - 继承的 'Get' 函数不会返回正确的值

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:28 24 4
gpt4 key购买 nike

我有一个基类 BankAccount,然后是 3 个派生类:SavingsAccount、CheckingAccount 和 AchieverAccount(也继承检查)。唯一的 get_ 函数在基类 public 中。当我从 3 个派生类调用它时,它返回 0,我认为这是基类的构造函数所做的。我用 this->balance(); 制作了 getBalance 函数;作为一个测试,看看它是否会退还余额,不走运,我只是退还余额;手前。我试图公开余额,尽管这不是一个好主意而且仍然一无所获。所以一定是 SavingsAccount 没有正确继承它,或者 getBalance 没有获得正确的余额,我在这方面需要帮助。

我不会包含所有的代码,因为它会变得很多,但我会把我认为重要的放在里面,如果你愿意的话,我可以把它全部放在里面。这仅适用于 SavingsAccount,因为我认为如果我在这方面得到帮助,我可以在其他地方解决。

所有这些都有#include 和using namespace std;


银行帐户.h


class BankAccount{
public:
BankAccount();
BankAccount(double amount);
double getBalance();
};
private:
double balance;

银行账户.cpp


#include "BankAccount.h"
BankAccount::BankAccount(){
balance = 0;
}

BankAccount::BankAccount(double amount){
balance = amount;
}

double BankAccount::getBalance(){
return this->balance;
}

储蓄账户.h


#include "BankAccount.h"
class SavingsAccount: virtual public BankAccount{
public:
SavingsAccount();
SavingsAccount(double amount);

private:
double balance;
};

储蓄账户.cpp


#include "SavingsAccount.h"
SavingsAccount::SavingsAccount(){
balance = 0.00;
}

SavingsAccount::SavingsAccount(double amount){
balance = amount;
interest = .09;
}

main.cpp


#include "SavingsAccount.h"
#include "BankAccount.h"
void main(){
cout << "Creating new SavingsAccount with $2000.00" << endl;
SavingsAccount sa(2000.00);

cout << "Current balance: $" << sa.getBalance() << endl;
}

输出


用 $2000.00 创建新的 SavingsAccount当前余额:$0.00

按任意键继续。 . .

最佳答案

BankAccount 类很可能有一个名为 balance 的成员(由于某种原因未在您的代码中显示) - 否则 BankAccount(double) 构造函数不会编译。

SavingsAccount 类还有一个名为 balance 的成员。意识到 SavingsAccount::balanceBankAccount::balance 不同且无关。 SavingsAccount 的构造函数初始化前者,而 BankAccount::getBalance 返回后者的值。

您可能正在寻找这样的东西:

class BankAccount {
double balance;
public:
BankAccount(double value) : balance(value) {}
double getBalance() const { return balance; }
};

class SavingsAccount : public BankAccount {
public:
SavingsAccount(double value) : BankAccount(value) {}
};

我建议您阅读您最喜欢的 C++ 教科书中有关构造函数初始化列表的内容。

关于c++ - 继承的 'Get' 函数不会返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19921152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com