C++的算符重载

发布时间:2006-06-28 05:25     点击:
分页:上一页  1 2 3 4 5 6 [7] 8 9  下一页

void userCode(LinkedList& a) 



 for (LinkedListIterator p = a.begin(); p != a.end(); ++p) 

 std::cout << *p << ’\n’; 



  实现这个接口,LinkedList需要一个begin()方法和end()方法。它们返回一个“LinkedListIterator”对象。该“LinkedListIterator”需要一个前进的方法,++p ;访问当前元素的方法,*p;和一个比较算符,p != a.end()。 

  如下的代码,关键在于 LinkedList 类没有任何让用户访问 Node 的方法。Node 作为实现技术被完全地隐藏了。LinkedList内部可能用双重链表取代,甚至是一个数组,区别仅仅在于一些诸如

prepend(elem) 和 append(elem)方法的性能上。 

#include // Poor man’s exception handling 

class LinkedListIterator; 

class LinkedList; 

class Node {   // No public members; this is a "private class" 

 friend LinkedListIterator; // 友员类 

 friend LinkedList; 

 Node* next_; 

 int elem_; 

}; 

class LinkedListIterator { 

public: 

bool operator== (LinkedListIterator i) const; 

bool operator!= (LinkedListIterator i) const; 

void operator++ (); // Go to the next element 

int& operator* (); // Access the current element 

private: 

LinkedListIterator(Node* p); 

Node* p_; 

friend LinkedList; // so LinkedList can construct a LinkedListIterator 
分页:上一页  1 2 3 4 5 6 [7] 8 9  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有