问答题 [说明]
对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器Iterator实现。图5-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。
[图5-1]
【正确答案】(1)Object
【答案解析】
【正确答案】virtual
【答案解析】
【正确答案】Iterator<Object>
【答案解析】
【正确答案】&bookShelf
【答案解析】
【正确答案】it->hasNext()
【答案解析】Iterator是模板类,空(1)应该填某个类名,其方法next()的返回类型是Object,而Object没有定义,故空(1)应填Object。
从next()方法末尾的“=0”可知,该方法为纯虚函数,故空(2)应填virtual<Object>。
BookShelfIterator类继承自Iterator类,要注意的是模板类基类的写法,空(3)应填Iterator。
根据构造函数BookShelflterator(BookShelf*bookShelf)可得,空(4)应填&bookSheff,注意地址符,因形参是BookShelf指针。
while循环是遍历书架,输出书名,循环条件是“还有下一记录(书)”,故空(5)应填it->hasNext()。注意指针写法。