这是我第一次发布到这个网站,因此我会以建设性的方式感谢所有的批评。我正在学习使用C ++编写面向对象的编程,并决定对ATM机进行一个简单的模拟,该机器接收用户输入并处理它(即makeDeposit,checkBalance等)。
我的问题:BankAccount方法:makeDeposit最终将getBalance()的输出更改为前缀为零: 例如:makeDeposit(10)将从0改变getBalance() - > 010。
`//BankAccout.h
#ifndef BANK_ACCOUNT_H
#define BANK_ACCOUNT_H
#include <string>
class BankAccount {
private:
float m_accountBalance;
public:
BankAccount ();
float getBalance();
/*Can I pass by value or would reference be necessary?*/
void makeDeposit(BankAccount&, int);
};
#endif`
//BankAccout.cpp
#include "BankAccount.h"
#include <iostream> //remove once done
using namespace std; //remove once done
BankAccount::BankAccount () {
m_accountBalance = 0;
}
float BankAccount::getBalance() {
return m_accountBalance;
}
//increment the object balance based on ammount
void BankAccount::makeDeposit(BankAccount &bao, int deposit_amount) {
bao.m_accountBalance += deposit_amount;
}
int main () {
BankAccount b1;
cout << b1.getBalance(); //returns 0
b1.makeDeposit (b1,1); //returns 01
cout << b1.getBalance();
//Ex.
//makeDepost(b2, 10);
//b2.getBalance(); will retrun 010
return 0;
}
任何提示也将非常受欢迎,因为我即将参加最粗略的数据结构课程,而对面向对象编程的经验很少。
此外,有人可以向我解释什么是颠覆以及如何使用它。
答案 0 :(得分:6)
您只需将0
值打印到控制台,然后将1
添加到天平并再次将天平打印到控制台。结果? 01
。
如何避免它?将<< endl
添加到每个cout的末尾。然后,您将在单独的行中打印每个值。示例:
cout << b1.getBalance();
更改为cout << b1.getBalance() << endl;
你的第二个问题(尽管它与第一个问题无关):
Subversion(也称为SVN)是一个软件版本控制系统。您可以经常使用它进行备份,并且 - 在所有事情之前 - 您可以与您的团队协作处理项目。更多信息:http://en.wikipedia.org/wiki/Apache_Subversion
答案 1 :(得分:2)
您没有打印新行,因此它将它集中在01
的0和1之间。要解决此问题,请在endl;
cout << b1.getBalance();
像这样:
int main () {
BankAccount b1;
cout << b1.getBalance() << endl; //returns 0
b1.makeDeposit (b1,1); //returns 01
cout << b1.getBalance() << endl;
//Ex.
//makeDepost(b2, 10);
//b2.getBalance(); will retrun 010
return 0;
}