2017-01-03 18 views
-2

このコードは「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; 
} 
+2

ゲッターとセッターについて読んでください。あなたがC++やYAGNIでそれらを必要としているかどうかについては、継続的な議論があります。ここには[C++の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)の素敵なリストがあります。 –

+2

あなたが表示するコードでは使用されていません。恐らくそれは後に出てくるだろう。これはアクセサ関数です。 –

+0

完全性と最も重要なカプセル化のために、メソッド 'getSpeed()'が定義されています。あなたはいつでも「三輪車」の現在の速度にアクセス/アクセスできるようになります。 – sameerkn

答えて

0

このメソッドは、Speedからの値を返します。

したがって、setSpeedを0より大きい値で呼び出すと、スピード値は新しい値に設定されます。 private int変数として宣言されています。

速度はプライベート変数なので、あなたがretriveことができない/クラスのスコープ外でその値を設定します。mySpeedの値は、現在10

0

ある

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

例として、ここでは、setSpeedとgetSpeedのpublic関数を使用しています。これを使用して、Speedをクラススコープの外にあるtricycleオブジェクトに戻したり設定したりできます。三輪車オブジェクトの使用の速度をretriveする三輪車の使用の速度、

myTricycle.setSpeed(100); 

//を設定するために、例えば

Tricycle myTricycle = new Tricycle(); 

//、

myTricycle.getSpeed(); // returns 100; 
0

あなたがすることができないためmain()関数または他の場所から直接メンバーにアクセスしてください。しかし、public関数を使用して、任意のクラスのオブジェクトの要素privateにアクセスすることができます。それにもかかわらず、あなたはそれらの私的な要素にアクセスすることはできません。あなたのコードでは、speedprivateのメンバーで、この値を取得するにはpublicの関数、つまりgetSpeedが使用されています。

関連する問題