为什么我的继承Espresso类的默认构造函数中的重写方法(getDescription)无法被识别?

时间:2012-01-30 10:37:08

标签: polymorphism

我正在尝试在继承的Espresso类中重载方法getDescription(),但是当我在main()中调用它时,会列出Unknown Beverage,并且Espresso类中的默认构造函数似乎没有被调用。

我希望它使用此扩展类从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();       
}; 

1 个答案:

答案 0 :(得分:0)

getDescription() = "Espresso Coffee";

不会更改description成员。它返回一个你改变的新字符串。

您需要在基类中使用setter方法:

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