0
#include <iostream>

using namespace std;

class tricie
{
public:
    tricie(int);
    ~tricie();
    void acc();
    void deacc();
private:
    int df_speed=8;
};

tricie::tricie(int speed_input)                //Shouldn't this make the speed=8?
{
    int speed;
    if (speed_input > df_speed)
    {
        speed=speed_input;
        cout<<"speed now is "<<speed<<" km/hr \n";
    }
    else
    {
        speed=df_speed;
        cout<<"speed now is "<<speed<<" km/hr \n";
    }
}
tricie::~tricie()
{

}
void tricie::acc()
{
    int speed=(speed+1);
    cout<<"speed now is "<<speed<<" km/hr \n";
}
void tricie::deacc()
{
    int speed=(speed-1);
    cout<<"speed now is "<<speed<<" km/hr \n";
}
int main(int argc, const char * argv[])  //Xcode but these stuff in the bracket (ignore)
{
    tricie biker1(4);          //If i put any number > 8 the program work correctly
    biker1.acc();              //output from this line is "speed now is 5 km/hr "    instead of 9
    biker1.deacc();            //output from this line is "speed now is 4 km/hr "    instead of 8
    biker1.deacc();            //output from this line is "speed now is 3 km/hr "    instead of 7
    return 0;
}

我想知道我是否遗漏了一个概念,它告诉我为什么输出 8 5 4 3 而不是 8 9 8 7?

提前感谢,如果问题很愚蠢,我很抱歉,我正在使用 sams 在 24 小时书中自学 C++。

感谢大家的快速回复我会搜索是否有办法防止在这些情况下编译提出我有一个后续问题:当我将 int speed 放在课堂的私人部分并且它工作正常但我想知道因为我把它放在类的私有部分并且主函数可以看到它,所以我没有得到另一个错误吗?

4

2 回答 2

2

您的基本概念有问题,因为您使用的局部变量 ( int speed) 一旦离开函数就会失去其价值。您最可能想要的是一个成员变量(就像df_speed)。

构造函数中的输出是正确的,因为您以任何一种方式设置值。

但是,tricie::acc()and的输出tricie::deacc()是未定义的,因为您speed在分配/计算中使用了未初始化的变量 ( )。

于 2013-01-29T11:54:29.600 回答
2

您的代码中有错误。speed您在所有函数(构造函数acc()和)中重新声明变量deacc(),例如deacc()

int speed=(speed+1);

最初speed未声明(在此范围内),但您使用它从中减去1。这是(完全)未定义的行为。

要解决此问题,请删除这 3 种情况下的变量声明 ( int),并在类中添加一个类变量以存储当前速度:

class tricie {
  //...
  int speed;
  //...
}

void tricie::deacc()
{
    speed=(speed-1);
    cout<<"speed now is "<<speed<<" km/hr \n";
}

acc()和在构造函数中完全删除相同int speed;

注意:我不知道是什么df_speed,我假设(d)“默认速度”。如果是应该保持实际速度的类变量,则需要将所有speed变量用法重命名为df_speed. 但这取决于df_speed(可能在您的书中有所描述..?)

于 2013-01-29T11:54:56.443 回答