继承的'Get'函数不会返回正确的值
Inherited 'Get' function will not return correct value
我有一个基类 BankAccount,然后是 3 个派生类:储蓄账户、支票账户和成就者账户(也继承支票)。唯一的get_函数位于基类公共中。当我从 3 个派生类调用它时,它返回 0,我假设这是基类的构造函数正在做的事情。我用这个->balance()做了getBalance函数;作为测试,看看它是否会返回余额,没有运气,我把它当作返回余额;在手之前。我试图公开平衡,即使这不是一个好主意,仍然什么都没有。所以一定是储蓄账户没有正确继承它,或者getBalance没有得到正确的余额,我需要帮助。
我不会包含所有代码,因为它结果很多,但我会把它放在我认为重要的地方,如果你愿意,我可以把它全部放进去。这仅适用于储蓄账户,因为我认为如果我得到帮助,我可以在其他地方找到答案。
所有这些都具有 #include 并使用命名空间 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;
}
主.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创建新的储蓄账户当前余额: $0.00
按任意键继续 . . .
BankAccount
类很可能有一个名为 balance
的成员(由于某种原因未显示在代码中) - 否则BankAccount(double)
构造函数将无法编译。
SavingsAccount
类还有一个名为 balance
的成员。意识到SavingsAccount::balance
与BankAccount::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++教科书中阅读构造函数初始值设定项列表。
我没有看到为基类声明的平衡变量,但您参考了它.. 这是如何工作的?我假设你有一个,只是没有把它复制到这里。
但是,问题是您的储蓄账户也声明了余额,该余额将设置为2000。 但是在父类中定义的 getBalance 无法看到该值并返回 0。
您想为每个账户设置一个储蓄变量吗?在这种情况下,不应在派生类中重新定义节省。您正在基类中调用 get 并返回 0。
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 接收和返回函数指针的函数指针的类型?
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- C++函数链返回函数
- 返回函数指针的函数的签名
- 由于值返回函数中的错误,程序无法编译.它说未声明的标识符
- 非常量引用返回函数在常量值返回函数上用作 r 值
- 如何在 C++ 中从 void 返回函数访问变量
- 返回函数中带有 2 个可选 ctor 的对象
- 如何在 c++ 中返回函数的结构向量
- 返回 C++ 函数中的引用
- 使用向量时,当返回函数更改时,无法看到输出
- 如何在递归中使用返回函数
- 返回函数模板的类型C++作为第二个模板参数
- 为什么静态指针返回函数中有一个"静态"键?
- 递归返回函数,在特殊情况下不返回
- 从类返回函数
- 从类成员函数返回函数指针
- 从返回函数中推断不存在的模板参数