通过自增,自减运算符的重载实现类的自增自减
#include<bits/stdc++.h>
using namespace std;
class Cdemo{
private:
int n;
public:
Cdemo(int x=0):n(x){}
Cdemo & operator++();//前置++ 成员函数
Cdemo operator++(int);//后置++ 成员函数
operator int(){return n;}//类型转换运算符(int)重载
friend Cdemo & operator--(Cdemo &);//前置-- 全局函数
friend Cdemo operator--(Cdemo &,int);//后置-- 全局函数
};
Cdemo & Cdemo::operator++(){//前置++
++n;
return *this;//返回对象的引用
}
Cdemo Cdemo::operator++(int x){//后置++
Cdemo tm(*this);//记录修改前的对象
n++;
return tm;//返回修改前的对象
}
Cdemo & operator--(Cdemo & y){//前置--
y.n--;
return y;//返回对象的引用
}
Cdemo operator--(Cdemo & y,int k){//后置--
Cdemo tm(y);//记录修改前的对象
y.n--;
return tm;//返回修改前的对象
}
int main(){
Cdemo shu(5);
cout<<(shu++);
cout<<shu;
cout<<(++shu);
cout<<shu;
cout<<(shu--);
cout<<shu;
cout<<(--shu);
cout<<shu;
/* cout<<(shu++)<<" "<<shu<<" "<<(++shu)<<" "<<shu<<endl;
cout<<(shu--)<<" "<<shu<<" "<<(--shu)<<" "<<shu<<endl;*/
return 0;
}
结果如下:
56777655