首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

iterator++与++iterator有关问题

2012-02-16 
iterator++与++iterator问题1classconst_iterator2{3protected:4Node*current56public:7const_iterator&o

iterator++与++iterator问题
1     class   const_iterator
2     {
3     protected   :
4     Node   *current;
5
6     public:
7     const_iterator   &   operator++   ()
8{
9current   =current-> next;
10return   *this;
11}
12
13const_iterator   operator++(int)
14{
15const_iterator   old=*this;
16++(*this);
17return   old;
18}
19   }

这是const_iterator类的部分实现代码。
line7至line18分别定义了const_iterator++与++const_iterator的行为。

小弟想问的是:
为什么在operator++里返回的是对现有对象的引用 "const_iterator   & "
而在operator++   (int)里直接返回局部变量old   "const_iterator "
个人感觉应该都可以直接返回 "const_iterator   & "或 "const_iterator "。
请各位大侠指点,谢谢!

[解决办法]
const_iterator old;
是格临时变量,
函数结束就over了, 你怎么再引用它 ?
[解决办法]
13const_iterator operator++(int)
14{
15const_iterator old=*this;
16++(*this);
17return old;
18}

这里不能返回&因为const_iterator 是在栈上,函数返回就无效了

所以只能返回 值
[解决办法]
涉及到内存的问题...
局部变量在局部才有用,当你退出局部后,该变量已经不存在了,那还引用什么?

热点排行