1、前置式返回的引用,效率会高一点
2、后置式返回的常对象,内部需要一个临时对象,效率相对低一些
备注:
1、前置式和后置式都没有参数,为了加以区分,再后置式增加int自变量,默认值为0
2、对于后置式返回常对象,是因为如果两次使用后置式,也只累加了一次,容易引起混淆,
所以最好的办法就是禁止它合法化,i.operator++(0).operator++(0);常对象无法引用
普通成员函数(两次使用前置式是合法的,++++i);
点击查看代码
class UPInt{
public:
UPInt & operator++(); //前置式++
const UPInt operator++(int); //后置式++UPInt & operator--(); //前置式--
const UPInt operator--(int); //后置式--UPInt& operator+=(int); //+=操作符,结合UPInts和ints
点击查看代码
//前置式:累加然后取出
UPInt& UPInt::operator++(){
*this += 1;
return *this;
}//后置式:取出然后累加,int自变量没有用到
const UPInt UPInt::operator++(int){
UPInt oldValue = *this;
++(*this);
return oldValue;
}