c++

c++ operator++

Posted by ysd on September 22, 2016

当对operator ++函数进行重载时,需要自增操作符的前缀和后缀形式有不同的参数。 但是不论是自增或自减的前缀还是后缀都只有一个参数。 为了解决这个语言问题, C++规定后缀形式有一个int类型参数,当函数被调用时,编译器传递一个0做为int参数的值给该函数.


UPInt& operator++() {
    *this += 1;
    return *this;
}

const UPInt operator++(int) {
    UPInt old = *this;
    ++(*this);
    return old;
}

注意:

  • 如果重载,注意后缀形式要返回const,避免i++++,基本类型int不允许这样,且连续后缀自加时第二次自加改变的是第一次自加返回的值
  • 前缀形式效率更高