前置++,前置--作为一元运算符重载
- 重载为成员函数:T &operator++()
- 重载为全局函数:T &operator++(T2)
后置++,后置--作为二元运算符重载,多写一个没用的参数
- 重载为成员函数:T &operator++(int)
- 重载为全局函数:T &operator++(T2, int)
#include <iostream>
using namespace std;
class CDemo{
private:
int n;
public:
CDemo(int i=0) : n(i) { }
// 重载为成员函数
CDemo &operator++(); //前置++作为一元运算符重载
CDemo &operator++(int k); //后置++作为二元运算符重载,多写一个无用参数
//重载为全局函数
friend CDemo &operator--(CDemo &d); //前置--
friend CDemo &operator--(CDemo &d, int); //后置--
operator int() { return n; } //重载强制类型转换运算符
};
CDemo &CDemo::operator++()
{
this->n++;
return *this;
}
CDemo &CDemo::operator++(int k)
{
CDemo temp(*this);
this->n++;
return temp;
}
CDemo &operator--(CDemo &d)
{
d.n--;
return d;
}
CDemo &operator--(CDemo &d, int)
{
CDemo temp(d);
d.n--;
return temp;
}
int main()
{
CDemo arr;
cout << (++arr) << endl; //1
cout << (--arr) << endl; //0
cout << (arr++) << endl; //0
cout << (arr--) << endl; //1
return 0;
}