2016-05-28 45 views
0

我在測試具有相同名稱的變量對於單獨類是否是唯一的時遇到問題。繼承兄弟姐妹中的相同變量名

這是我的例子:

class Sprite 
{ 
public 
    int maxHP; 
    virtual void setup()=0 
}; 

class Hero : public Sprite 
{ 
    void setup(){maxHP = 100;} 
}; 
class Monster : public Sprite 
    void setup(){maxHP = 60;} 
}; 

兩者都做我的精靈有0馬力?變量是否互相重疊? 我是否必須使用this->關鍵字使它們全部具體?

謝謝。

+0

良好的編程習慣:在繼承類中,總是使用'this->'。沒什麼大不了的 –

回答

0

如果您創建的變量類型爲Sprite並且沒有專門化它(如HeroMonster),那麼它有0 HP。但是,如果您創建一個類型爲Sprite的指針,並且該指針保存特定類型的地址;那麼它的HP也是專精的。我的意思是:

Sprite *S; //the pointer 
Hero Johny; 
S = &Johny; 

S->setup(); // Johny's HP is updated to 100