2012-01-30 57 views
0

我想重載繼承類Espresso中的方法getDescription(),但是當我在main()中調用它時,會列出Unknown Beverage並且Espresso類中的默認構造函數似乎沒有被調用。爲什麼我的繼承Espresso類的默認構造函數中的重寫方法(getDescription)不被識別?

我希望它使用這個擴展類從main()打印Espresso Coffee。

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成員。它返回一個你改變的新字符串。

您需要在基類的setter方法:

Espresso() { setDescription("Espresso Coffee"); }; 
相關問題