问答题 阅读下列说明和C++代码,将应填入______处的字句写在下面。
[说明]
某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图1所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中添加新的餐饮形式,得到如图2所示的类图,其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图1中的甜点菜单,类MenuItem表示菜单中的菜式。

图1 菜单结构图

【正确答案】
【答案解析】virtual void add(MenuComponent*menuComponet)=0
MenuComponet*
nemuComponets->push_back(menuComponent)
(*iter)
allMenus [解析] MenuComponent是虚基类,其中要定义添加新菜单纯虚函数,函数体在其派生类Menultem和Menu中现。第一个空处应填入:virtual void add(MenuComponent*menuComponet)=0。
在类Menu定义了列表menuComponets,用于保存添加的新菜单,由std::list<MenuComponent*>::iteratoriter可知列表的类型为MenuComponent*,故第二个空处应填入:MenuComponet*。
添加菜单时,可以从menuComponets列表的前面添加,也可以从menuComponets列表的后面添加,但通过菜单的输出函数可知,菜单是从列表的后面添加的,因此第三个空处应填入:nemuComponets->push back(menuComponent)。
iter是迭代器,用于遍历菜单列表menuComponets,第四个空处应填入(*iter)。
在主函数,打印饭店所有菜单信息的函数调用为:allMenus->print()。