需要帮助从书中理解这段代码

时间:2017-01-03 06:46:25

标签: c++

这段代码来自" Sams Teach Yourself C ++"。它可能是一些简单的东西,但我很难解决这个问题。如果我不使用getSpeed()方法,我会得到相同的输出。所以我需要这个吗?如果没有,为什么这本书会使用它?

#include <iostream>

class Tricycle 
{
public :
    int getSpeed();
    void setSpeed(int speed);
    void pedal();
    void brake();
private :
int speed;
};

int Tricycle::getSpeed()   //<-- Why do I need this method
{
    return speed;
}

void Tricycle::setSpeed(int newSpeed) 
{
    if (newSpeed >= 0)
    {
        speed = newSpeed;
    }
}

void Tricycle::pedal() 
{
    setSpeed(speed + 1);
    std::cout << "\nPedaling; tricycle speed " << speed << " mph\n";
}

void Tricycle::brake() 
{
    setSpeed(speed - 1);
    std::cout << "\nBraking ; tricycle speed " << speed << " mph\n";
}

int main()
{
    Tricycle wichita;

    wichita.setSpeed(0);
    wichita.pedal();
    wichita.pedal();
    wichita.brake();
    wichita.brake();
    wichita.brake();
    return 0;
}

3 个答案:

答案 0 :(得分:0)

此方法从速度返回值。

因此,如果您将setSpeed的值设置为0,则将Speed Value设置为新值。声明为私有int变量。

例如

int main()
{
Tricycle wichita;
wichita.setSpeed(10);
int mySpeed= wichita.getSpeed();
}

mySpeed的价值现在是10。

答案 1 :(得分:0)

由于Speed是一个私有变量,因此无法在类范围之外检索/设置其值。所以这里我们使用了setSpeed和getSpeed公共函数,通过它我们可以在类范围之外检索/设置Speed到三轮车对象。

例如,

Tricycle myTricycle = new Tricycle();

//设定三轮车的使用速度,

myTricycle.setSpeed(100);

//用于反击三轮车对象使用的速度,

myTricycle.getSpeed(); // returns 100;

答案 2 :(得分:0)

因为您无法直接从private功能或其他位置访问main()成员。但是您可以使用public函数来访问任何类的对象的private元素。尽管如此,您无法访问这些私有元素。在您的代码中,speedprivate成员,为了获得此值,我们正在使用public函数getSpeed