C++迭代器的两种实现方式(六)

2014-07-19 23:04:15 · 作者: · 浏览: 243

 

  需要注意的是,凡是体现多态性的函数,返回值必须为引用或者指针,且不得为栈中的临时变量,因此我们调用完GetEnumerator()后,要将生成的迭代器删除,删除的代码写在了MoveNext()内,当游标不可移动的时候,迭代器被删除。

  以后就可以用自己的foreach宏定义来遍历元素了:

  std::string a;

  CSharpCollection csc;

  IEnumerable<STD::STRING>& refcsc = csc;

  foreach (a , refcsc ){

  std::cout 《 a 《 std::endl;

  }

  上面代码的第三行意在说明,如果一个类中继承了IEnumerable类,它一定是可迭代的,可以调用它的Reset()、MoveNext()、Current(),也可以用我们刚刚写的foreach来进行遍历。