前置和后置的区别

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;
}
posted @ 2025-11-10 17:56  冰凌蔷薇  阅读(0)  评论(0)    收藏  举报