读书人

iterator++与++iterator有关问题

发布时间: 2012-02-16 21:30:36 作者: rapoo

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 是在栈上,函数返回就无效了

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

读书人网 >C++

热点推荐