c++ - 为什么这样不能实现后置递增?

浏览:31日期:2023-05-31

问题描述

reference operator*() { return *_ptr; } //解引用操作array_iterator<T, N>&operator++() //前置递增{++**this; //增加_ptr, //当把上面那句改为 ++_ptr后就能实现 这两者的区别是什么? return *this; }array_iterator<T, N> operator++(int) //后置递增{ array_iterator<T, N> tmp = *this; //返回量 ++*this; return tmp;}

当把++**this;改为 ++_ptr就能实现,这两者有什么区别?(_ptr是类里的一个成员,为指针类型 T*)

问题解答

回答1:

++*this== ++(this->operator*())== ++*(this->_ptr)== ++*_ptr

++*_ptr和++_ptr显然是不一样的,所以题主你的代码当然不能实现愿望。

回答2:

reference operator() { return _ptr; } //解引用操作上诉语句返回的是ptr指向的值,而this得到类,该类再调用上面的操作符的时候,得到的是该指针指向的值,所以实际上是修改了指针指向的值而不是指针的值。

相关文章: