2012-01-30 7 views
0

私はそれを継承したクラスEspressoでメソッドgetDescription()をオーバーロードしようとしていますが、main()で呼び出すとUnknown Beverageがリストされ、Espressoクラスのデフォルトコンストラクタが呼び出されていないようです。継承されたEspressoクラスのオーバーライドされたメソッド(getDescription)がデフォルトのコンストラクタで認識されないのはなぜですか?

この拡張クラスを使用してmain()からエスプレッソコーヒーを印刷したいと思います。

class Beverage   
{ 

string description; 

public:  
Beverage() : description("Unknown Beverage"){};  
string getDescription() { return description; }; 
}; 



class Espresso : public Beverage  
{  
public:  
Espresso() { getDescription() = "Espresso Coffee"; };  
~Espresso();  
};  



int main()  
{  
Beverage *beverage = new Espresso();   
cout << beverage->getDescription();  
}; 

答えて

0
getDescription() = "Espresso Coffee"; 

descriptionメンバーを変更しません。あなたが変更する新しい文字列を返します。

Espresso() { setDescription("Espresso Coffee"); }; 

あなたは、基本クラスでセッターメソッドを必要とします

関連する問題