如果在C ++中对bool的else语句

时间:2016-03-18 11:07:33

标签: c++

基本上,我有3个功能 第一和第二功能是检查点火是真还是假。 第三个功能主要是检查点火是否打开,速度不能大于65,如果速度大于65,它将"修复"那速度是65。 然而,如果点火开关关闭,速度将为0。

然而, 在我的代码中,我做了一个if else语句。 当我打印点火关闭的部分时, 我得到的值是65.它假设是0。

我可以知道我的代码有什么问题吗?

car.h

#ifndef car_inc_h
#define car_inc_h
#include <iostream>
#include <string>

using namespace std;

class Car {
    bool isIgnitionOn;
    int speed;
public:
    void turnIgnitionOn();
    void turnIgnitionOff();
    void setSpeed(int);
    void showCar();
};
#endif

car.cpp

#include <iostream>
#include <string>
#include "Car.h"

using namespace std;

void Car::turnIgnitionOn() {
    this->isIgnitionOn = true;
}

void Car::turnIgnitionOff() {
    this->isIgnitionOn = false;
};


void Car::setSpeed(int speed) {

    if (isIgnitionOn == true) {
        if (speed >= 65) {
            this->speed = 65;
        }
        else {
            this->speed = speed;
        }
    }
    else if (isIgnitionOn == false){
        this->speed = 0;
    }

};


void Car::showCar() {
    if (isIgnitionOn == true) {
        cout << "Ignition is on." << endl;
        cout << "Speed is " << speed << endl;
    }
    else if (isIgnitionOn == false) {
        cout << "Ignition is off" << endl;
        cout << "Speed is " << speed << endl;
    }


};

的main.cpp

#include <iostream>
#include <string>
#include "Car.h"

using namespace std;

int main() {
    Car myCar;
myCar.turnIgnitionOn();
    myCar.setSpeed(35);
    myCar.showCar();

    myCar.setSpeed(70);
    myCar.showCar();

    myCar.turnIgnitionOff();
    myCar.showCar();
    return 0; 
}

1 个答案:

答案 0 :(得分:3)

speed永远不会重置为0.您可以在this->speed=0中添加turnIgnitionOff,这更符合逻辑。