阅读下列函数说明和C++代码,回答问题 [说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookS

admin2012-02-20  32

问题 阅读下列函数说明和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;
   }

选项

答案(1)Object virtual Iterator<Object> &bookShelf it->hasNext()

解析
转载请注明原文地址:https://jikaoti.com/ti/S3i7FFFM
0

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