阅读下列函数说明和C++代码,回答问题 [说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器Iterator实现。图5-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。 [图5-1] [C++代码] template (1) > class Iterator{ public: virtual bool hasNext() = 0; (2) Object* next() = 0; }; class Book{ //省略具体方法和属性 }; class BookShelf{ private: vector books; public: BookShelf(){ } Book* getBookAt(int index){ return &booksindex; } int getLength(){ return books. size(); } }; template class BookshelfIterator : public (3) { private: BookShelf * bookShelf; int index; public: BookshelfIterator(BookShelf *bookShelf){ this->bookShelf = bookShelf; index = 0; } bool hasNext(){//判断是否还有下一个元素 if(index < bookShelf->getLength()){ return true; }else{ return false; } } Objeot* next(){//取得下一个元素 return bookShelf->getBookAt(index++); } }; int main() { BookShelf bookShelf; //将书籍上架,省略代码 Book *book; Iterator *it = new BookShelfIterator( (4) ); while( (5) ){//遍历书架,输出书名 book=(Book*)it->next(); /*访问元素*/ } return 0; }