值?通过引用传递是错误的

时间:2016-04-24 01:53:29

标签: c++ reference

我不是很精通c ++所以当我完成程序时,我首先用Java编写它,以便我能更好地理解并帮助将其转换为c ++ 这是代码:

Odometer.h

    class Odometer
    {
    public:
     Odometer();
     int traveled(int mils);
     void report();
    private:
     int miles;
    };

里程表类:

    #include "Odometer.h"
    #include <iostream>
    using namespace std;

    Odometer::Odometer(){ //just added
    miles = 0; //initializing
    }
    int Odometer::traveled(int mils){
    miles = miles + mils;
    return miles;
    }
    void Odometer::report(){
    int limit = 999999;
    if (miles < limit){
        cout << miles;
        }
    else{
        miles = 0;
    }
    }

FuelGauge.h

    class FuelGauge{
     public:
      FuelGauge();
      int add(int gallons);
      void report();
      void decrement(int gallons);
     private:
      int gallons;
     };

FuelGauge类

#include "FuelGauge.h"
#include <iostream>
using namespace std;

FuelGauge::FuelGauge(){ //just added 
gallons = 0;
}
int FuelGauge::add(int gals){
    gallons = gallons + gals;
    return gallons;
    }
void FuelGauge::report(){
    cout << gallons << endl;
    }
void FuelGauge::decrement(int galls){
    gallons = gallons - galls;
    }

CarInfoMain类

#include "FuelGauge.h"
#include "Odometer.h"
#include <iomanip>
#include <iostream>
using namespace std;

int main(){
    FuelGauge g;
    Odometer m;
    int gallons;
    int miles;

    cout << "How many gallons do you want to start with in the car? " << endl;
    cin >> gallons;
    g.add(gallons);
    cout << "How far did you travel? " << endl;
    cin >> miles;
    g.decrement(miles / 24);
    cout << "Current Gallons now: " << endl;
    g.report(); //<--- this is where it doesn't return it right
    /*cout << "Odometer: " << endl;
    m.report();*/
}

示例运行:

  加仑开始了吗? 14

     迈尔斯走了吗? 150

     

现在加仑:1470880840 //通常是这么大的一个,   有时//前面有一个减号,例如-574807128

我不知道为什么它不起作用。感谢

1 个答案:

答案 0 :(得分:1)

在c ++中,默认情况下,局部变量具有垃圾值/(在为变量分配之前存储在单元格中)。

所以,当你做里程=英里+密尔 您正在添加一些垃圾值 只需用0初始化里程和加仑即可解决问题。

int miles = 0; int gallons = 0;

相关问题