函数返回不需要的值

时间:2012-09-08 09:03:01

标签: c++

这是我第一次发布到这个网站,因此我会以建设性的方式感谢所有的批评。我正在学习使用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;
}

任何提示也将非常受欢迎,因为我即将参加最粗略的数据结构课程,而对面向对象编程的经验很少。

此外,有人可以向我解释什么是颠覆以及如何使用它。

2 个答案:

答案 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;
}