阅读下列说明和C++代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。 【说明】 某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。

admin2013-07-09  41

问题 阅读下列说明和C++代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。
    【说明】
    某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。
   
【C++代码】
#include
#include
using namespace std;
const int ESPRESSO_PRICE=25;
const int DRAKROAST_PRICE=20;
const int MOCHA_PRICE=10;
const int WHIP_PRICE=8;
class Beverage{//饮料
   (1)   :string description;
public:
   (2)   (){return description;}
   (3)   
    };
    class condimentDecorator:public Beverage{//配料
    protected:
      (4)   
    };
    class Espresso:public Beverage{//蒸馏咖啡
    public:
      Espresso(){description=“Espresso”;}
      int cos t(){return ESPRESSO_PRICE;}
    };
    class DarkRoast:public Beverage{//深度烘焙咖啡
    public:
      DarkRoast(){description=“DardRoast”;}
      int cost(){return DRAKROAST_PRICE;)
    };
    class Mocha:public condimentDecorator{//摩卡
    public:
      Mocha(Beverage*beverage){this->beverage=beverage;}
      string getDescription(){return beverage->getDescription()+”,Mocha”;}
      int cost(){return MOCHA_PRICE+beverage->cost();}
    };
    class Whip:public CondimentDecorator{//奶泡
    public:
      Whip(Beverage*beverage){this->beverage=beverage;}
      string getDescription(){return beverage->getDescription()+“,Whip”;}
      int cost(){return WHIP_PRICE+beverage->cost();}
    };
    Int main(){
      Beverage*beverage=new DarkRoast();
      beverage=new Mocha(   (5)   );
      beverage=new Whip(   (6)   );
      cout<<beverage->getDescription()<<”¥”<<beverage->cost()<<endl;
      return 0;
    }
    编译运行上述程序,其输出结果为:
    DarkRoast,Mocha,Whip,¥38

选项

答案(1)protected (2)virtual string getDescription (3)virtual int cost() (4)Beverage*beverage (5)beverage (6)beverage

解析 由类图可知,Beverage是基类,Espresso、DarkRoast、CondimentDecorator是Beverage的派生类,Mocha、Whip又是CondimentDecorator的派生类。
    (1)处应填入description的访问控制类型,可能为private或protected。在Beverage的派生类Espresso的初始化函数中直接使用了description,由此可知,在基类中,description的访问控制类型为protected。如果为private,则在派生中不能使用。
    在基类中先后动态建立了一个DarkRoast对象、Mocha对象和Whip对象,调用初始化函数并输出。
    在Mocha类和Whip类中分别调用了基类的getDescription()cost()。
转载请注明原文地址:https://jikaoti.com/ti/Jji7FFFM
0

相关试题推荐
最新回复(0)