搜尋

首頁  >  問答  >  主體

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

        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*)

伊谢尔伦伊谢尔伦2805 天前478

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:04:55

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

    ++*_ptr和++_ptr顯然是不一樣的,所以題主你的程式碼當然不能實現願望。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:04:55

    reference operator() { return _ptr; } //解引用操作
    上訴語句回傳的是ptr指向的值,
    this得到類,該類再得到類,該類再得到類呼叫上面的操作符的時候,得到的是該指標指向的值,所以實際上是修改了指標指向的值而不是指標的值。

    回覆
    0
  • 取消回覆