我在做作业时遇到了一些麻烦,试图弄清楚如何在派生类中使用基类中的setter函数。我不确定我对C++的理解是否正确,但希望我的代码能更好地解释它!
class account{
private:
double balance;
protected:
int numwithdraws = 0;
public:
void Setbalance(int bal)
{
balance = bal + balance;
}
int Getbalance()
{
return balance;
}
};
class checking : public account {
public:
WriteCheck(int checknum,double amount)
{
cout<<"Check amount?"<<endl;
cin>>amount;
Setbalance(amount);
checknum++;
}
};在我的主要功能中,有一个选项可以选择退出,这通常意味着我的余额会下降,所以我必须想出如何在我的设定余额中做这个负数,但是
checking obj2;
obj2.WriteCheck(0,0);
cout<<"New Balance = "<<obj1.Getbalance()<<endl;为了缩小问题所在,我提取了大量代码,但如果我为代码所写的内容令人困惑,我将尝试用语言更好地解释它。
我的基类帐户中有一个设置平衡和一个Getbalance。在派生类检查中,我尝试使用派生类函数WriteCheck中的基类中的设置平衡函数来更改我的帐户基类中的私有变量balance的数量。
问题是,当我在派生类函数中使用Setbalance并在main中调用Getbalance时,它仍然是0,并且不改变变量余额中的金额。
我在阅读自己的解释时感到困惑,所以我理解我是否很难理解我想问的问题。如果是这样的话,请让我知道,以便我可以尝试进一步解释!
发布于 2020-05-02 20:56:47
您的目标是正确的(从派生类中调用基类中的函数)。派生类通常具有基类所具有的函数,因此调用
checking obj2;
obj2.Getbalance()完全没问题。我对您的代码做了一些语法更改,以便它能够运行。我所做的唯一主要更改是将balance设置为0,这样就不会有任何未定义的行为。
#include <iostream>
using namespace std;
class account {
private:
double balance = 0;
protected:
int numwithdraws = 0;
public:
void Setbalance(int bal)
{
balance = bal + balance;
}
int Getbalance()
{
return balance;
}
};
class checking : public account
{
public:
void WriteCheck(int checknum, double amount)
{
cout << "Check amount?" << endl;
cin >> amount;
Setbalance(amount);
checknum++;
}
};
int main()
{
checking obj2;
cout << "New Balance = " << obj2.Getbalance() << endl;
return 0;
}https://stackoverflow.com/questions/61565675
复制相似问题