问答题
阅读下列说明和C++代码,将应填入______处的字句写在下面。
[说明]
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。
咖啡
|
价格/杯(¥)
|
配料
|
价格/杯(¥)
|
蒸馏咖啡(Espresso)
|
25
|
摩卡(Mocha)
|
10
|
深度烘焙咖啡(DarkRoast)
|
20
|
奶泡(Whip)
|
8
|
现采用装饰器(Decorator)模式来实现计算费用的功能,得到如下图所示的类图。
【正确答案】
【答案解析】protected virtual string getDescription virtual int cost()=0
Beverage*beverage beverage beverage
[解析] 由类图可知,Beverage是基类,Espresso、DarkRoast、CondimentDecorator是Beverage的派生类,Mocha、Whip又是CondimentDecorator的派生类。
第一处应填入description的访问控制类型,可能为private或protected。在Beverage的派生类Espresso的初始化函数中直接使用description,由此可知,在基类中,description的访问控制类型为protected。如果为private,则在派生中不能使用。
在基类中先后动态建立了一个DarkRoast对象、Mocha对象和Whip对象,调用初始化函数,并输出。
在Mocha类和Whip类中分别调用了基类的getDescription()cost()。