2017-01-03 151 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)。 – 2017-01-03 06:47:46

+2

它沒有用在你顯示的代碼中。想必它會在稍後出現。這是一個訪問函數。 –

+0

爲了完整性和最重要的封裝,定義了getSpeed()方法。這樣您就可以在任何時間點訪問「三輪車」的當前速度。 – sameerkn

回答

0

此方法從速度返回值。

因此,如果您調用setSpeed的值大於0,則速度值將設置爲新的值。聲明爲私有int變量。

如實例

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

myspeed的的值是現在10.

0

由於速度是一個專用變量,你將無法獲取/設置類範圍之外它的值。所以我們在這裏使用了setSpeed和getSpeed公共函數,通過它我們可以在類範圍之外檢索/設置Speed到三輪車對象。

例如,

Tricycle myTricycle = new Tricycle(); 

//設置三輪車使用的速度,

myTricycle.setSpeed(100); 

//以檢索三輪車對象使用的速度,

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

因爲你不能直接從main()功能或其他地方訪問private成員。但是您可以使用public函數來訪問任何類的對象的private元素。儘管如此,你不能訪問這些私有元素。在你的代碼中,speed是一個private成員,爲了得到這個值,使用了一個public函數,即getSpeed