3

这是我第一次在这个网站上发帖,因此我会以建设性的方式感谢所有批评。我正在学习用 C++ 编写面向对象的编程,并决定对 ATM 机器进行简单的模拟,该机器接受用户输入并对其进行处理(即 makeDeposit、checkBalance 等)。

我的问题:BankAccount 方法:makeDeposit 最终将 getBalance() 的输出更改为以零为前缀:例如:makeDeposit(10) 将 getBalance() 从 0 -> 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;
}

任何提示也将不胜感激,因为我即将参加最粗略的数据结构课程,但对面向对象编程的经验很少。

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

4

2 回答 2

6

您只需将0值打印到控制台,然后添加1到余额并再次将余额打印到控制台。结果?01.

如何避免?添加<< endl到每个 cout 的末尾。然后,您将在单独的行中打印每个值。示例:
cout << b1.getBalance();更改为cout << b1.getBalance() << endl;

您的第二个问题(尽管它与第一个问题无关):
Subversion(也称为 SVN)是一个软件版本控制系统。您可以经常使用它进行备份,并且 - 在一切之前 - 您可以与您的团队协作处理您的项目。更多信息:http ://en.wikipedia.org/wiki/Apache_Subversion

于 2012-09-08T09:09:26.237 回答
2

您没有打印新行,因此它将 0 然后 1 集中在一起01。修复它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;
}
于 2012-09-08T09:08:53.903 回答